]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fix for local interface MAC cache issue in 'bgp mac hash' table
authorKrishnasamy R <krishnasamyr@nvidia.com>
Tue, 21 Jan 2025 09:06:53 +0000 (01:06 -0800)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Tue, 21 Jan 2025 14:31:11 +0000 (14:31 +0000)
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 <krishnasamyr@nvidia.com>
(cherry picked from commit 016528364e686fb3b23a688707bd6ae6c5ea5f41)

bgpd/bgp_zebra.c

index 060ee2f2c81202a094999a1486cd6b664426575b..2e9c54e1265a4eae0f10d5a3ddc858882673d0b3 100644 (file)
@@ -3332,12 +3332,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);