]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: on local mac add from the dplane a re-install maybe need as static
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>
Mon, 8 Jun 2020 02:33:48 +0000 (19:33 -0700)
committerAnuradha Karuppiah <anuradhak@nvidia.com>
Tue, 1 Dec 2020 17:44:37 +0000 (09:44 -0800)
As a part of extended MM handing a MAC can be updated from local
to remote while being referenced by SYNC neighs (this is really a
temporary/small window). During this window if the MAC transitions
back to local again we need to re-inforce the previous SYNC flags
(based on the sync-neigh count) as subsequent SYNC updates to the
MAC will be de-duped and ignored.

Ticket: CM-29636

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
zebra/zebra_evpn_mac.c

index c1e8b2385efec0c28e2d8c5fab9bcd139794360a..f1e289ec60231bd131cd5ea109bcb5ae851c4537 100644 (file)
@@ -2097,13 +2097,12 @@ int zebra_evpn_add_update_local_mac(struct zebra_vrf *zvrf, zebra_evpn_t *zevpn,
        }
 
        /* if the dataplane thinks the entry is sync but it is
-        * not sync in zebra we need to re-install to fixup
+        * not sync in zebra (or vice-versa) we need to re-install
+        * to fixup
         */
-       if (dp_static) {
-               new_static = zebra_evpn_mac_is_static(mac);
-               if (!new_static)
-                       inform_dataplane = true;
-       }
+       new_static = zebra_evpn_mac_is_static(mac);
+       if (dp_static != new_static)
+               inform_dataplane = true;
 
        if (local_inactive)
                SET_FLAG(mac->flags, ZEBRA_MAC_LOCAL_INACTIVE);