From: Krishnasamy R Date: Tue, 21 Jan 2025 09:06:53 +0000 (-0800) Subject: bgpd: Fix for local interface MAC cache issue in 'bgp mac hash' table X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=4a49bf9be86eaef0b34a8622e94c652dd988f83a;p=mirror%2Ffrr.git bgpd: Fix for local interface MAC cache issue in 'bgp mac hash' table Issue: During FRR restart, we fail to add some of the local interface's MAC to the 'bgp mac hash'. Not having local MAC in the hash table can cause lookup issues while receiving EVPN RT-2. Currently, we have code to add local MAC(bgp_mac_add_mac_entry) while handling interface add/up events in BGP(bgp_ifp_up/bgp_ifp_create). But the code 'bgp_mac_add_mac_entry' in bgp_ifp_create is not getting invoked as it is placed under a specific check(vrf->bgp link check). Fix: We can skip this check 'vrf->bgp link existence' as the tenant VRF might not have BGP instance but still we want to cache the tenant VRF local MACs. So keeping this check in bgp_ifp_create inline with bgp_ifp_up. Ticket: #4204154 Signed-off-by: Krishnasamy R (cherry picked from commit 016528364e686fb3b23a688707bd6ae6c5ea5f41) --- diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index a64eb35591..f9d096e6c6 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -3141,12 +3141,15 @@ static int bgp_ifp_create(struct interface *ifp) zlog_debug("Rx Intf add VRF %u IF %s", ifp->vrf->vrf_id, ifp->name); + /* We don't need to check for vrf->bgp link to add this local MAC + * to the hash table as the tenant VRF might not have the BGP instance. + */ + bgp_mac_add_mac_entry(ifp); + bgp = ifp->vrf->info; if (!bgp) return 0; - bgp_mac_add_mac_entry(ifp); - bgp_update_interface_nbrs(bgp, ifp, ifp); hook_call(bgp_vrf_status_changed, bgp, ifp); return 0;