From: Christian Franke <[email protected]>

zsend_ipv4_nexthop_lookup_mrib is called with rib == NULL if the
lookup does not yield any result. Therefore, rib->vrf_id cannot be
used to construct the response and vrf has to be passed explicitly.

Signed-off-by: Christian Franke <[email protected]>
---
 zebra/zserv.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/zebra/zserv.c b/zebra/zserv.c
index e624ef2..ecca253 100644
--- a/zebra/zserv.c
+++ b/zebra/zserv.c
@@ -614,7 +614,7 @@ zsend_ipv4_nexthop_lookup (struct zserv *client, struct 
in_addr addr,
 */
 static int
 zsend_ipv4_nexthop_lookup_mrib (struct zserv *client, struct in_addr addr,
-                               struct rib *rib)
+                               struct rib *rib, vrf_id_t vrf_id)
 {
   struct stream *s;
   unsigned long nump;
@@ -626,7 +626,7 @@ zsend_ipv4_nexthop_lookup_mrib (struct zserv *client, 
struct in_addr addr,
   stream_reset (s);
 
   /* Fill in result. */
-  zserv_create_header (s, ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB, rib->vrf_id);
+  zserv_create_header (s, ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB, vrf_id);
   stream_put_in_addr (s, &addr);
 
   if (rib)
@@ -1016,7 +1016,7 @@ zread_ipv4_nexthop_lookup_mrib (struct zserv *client, 
u_short length,
 
   addr.s_addr = stream_get_ipv4 (client->ibuf);
   rib = rib_match_ipv4_multicast (addr, NULL, vrf_id);
-  return zsend_ipv4_nexthop_lookup_mrib (client, addr, rib);
+  return zsend_ipv4_nexthop_lookup_mrib (client, addr, rib, vrf_id);
 }
 
 /* Nexthop lookup for IPv4. */
-- 
2.8.0


_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to