]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Fix for local interface MAC cache issue in 'bgp mac hash' table 17891/head
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:07 +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 64994715a9d801f1810cb887171db5ac8fb54b43..47694881957f8362a6f3f224df065ff33378c3c4 100644 (file)
@@ -3333,12 +3333,15 @@ static int bgp_ifp_create(struct interface *ifp)
                zlog_debug("Rx Intf add VRF %s IF %s", ifp->vrf->name,
                           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);