zebra: mrib: Include BGP routes in RPF lookups
The rib_match_ipv4() function was previously used only for iBGP
recursive nexthop lookups, which ignore eBGP routes. This is not
desirable for PIM RPF lookups, which may well use an eBGP route.
Cc: Everton Marques <everton.marques@gmail.com>
Cc: Balaji G <balajig81@gmail.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/zebra/zserv.c b/zebra/zserv.c
index 89eb266..1b69315 100644
--- a/zebra/zserv.c
+++ b/zebra/zserv.c
@@ -612,16 +612,17 @@
unsigned long nump;
u_char num;
struct nexthop *nexthop;
+ int skip_bgp = 0; /* bool */
/* Lookup nexthop. */
- rib = rib_match_ipv4_safi (addr, SAFI_MULTICAST);
+ rib = rib_match_ipv4_safi (addr, SAFI_MULTICAST, skip_bgp);
if (IS_ZEBRA_DEBUG_PACKET && IS_ZEBRA_DEBUG_RECV)
zlog_debug("%s: %s mrib entry found.", __func__, rib ? "Matching" : "No matching");
if (!rib) {
/* Retry lookup with unicast rib */
- rib = rib_match_ipv4_safi (addr, SAFI_UNICAST);
+ rib = rib_match_ipv4_safi (addr, SAFI_UNICAST, skip_bgp);
if (IS_ZEBRA_DEBUG_PACKET && IS_ZEBRA_DEBUG_RECV)
zlog_debug("%s: %s rib entry found.", __func__, rib ? "Matching" : "No matching");
}