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
