zebra: fix crash caused by using route-map with "set src"

Signed-off-by: Stas Nichiporovich <stas@iptel.by>
Tested-by: NetDEF CI System <cisystem@netdef.org>
diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c
index da9cb13..49feccd 100644
--- a/zebra/zebra_routemap.c
+++ b/zebra/zebra_routemap.c
@@ -424,11 +424,13 @@
 {
   struct access_list *alist;
   struct nexthop *nexthop;
+  struct nexthop_vrfid *nh_vrf;
   struct prefix_ipv4 p;
 
   if (type == RMAP_ZEBRA)
     {
-      nexthop = object;
+      nh_vrf = object;
+      nexthop = nh_vrf->nexthop;
       switch (nexthop->type) {
       case NEXTHOP_TYPE_IFINDEX:
       case NEXTHOP_TYPE_IFNAME:
@@ -486,11 +488,13 @@
 {
   struct prefix_list *plist;
   struct nexthop *nexthop;
+  struct nexthop_vrfid *nh_vrf;
   struct prefix_ipv4 p;
 
   if (type == RMAP_ZEBRA)
     {
-      nexthop = object;
+      nh_vrf = object;
+      nexthop = nh_vrf->nexthop;
       switch (nexthop->type) {
       case NEXTHOP_TYPE_IFINDEX:
       case NEXTHOP_TYPE_IFNAME:
@@ -632,10 +636,10 @@
 {
   if (type == RMAP_ZEBRA)
     {
-      struct nexthop *nexthop;
+      struct nexthop_vrfid *nh_vrf;
 
-      nexthop = object;
-      nexthop->src = *(union g_addr *)rule;
+      nh_vrf = object;
+      nh_vrf->nexthop->src = *(union g_addr *)rule;
     }
   return RMAP_OKAY;
 }