summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2020-06-08 04:33:48 +0200
committerAnuradha Karuppiah <anuradhak@nvidia.com>2020-12-01 18:44:37 +0100
commit69711b3f8364d3bcf5d170649eef4c0ed536d851 (patch)
tree5d1a61a667c2a95a733b5c356f5cc3d9da7af043
parentzebra: set inactive bit when zebra re-installs the MAC on dplane del (diff)
downloadfrr-69711b3f8364d3bcf5d170649eef4c0ed536d851.tar.xz
frr-69711b3f8364d3bcf5d170649eef4c0ed536d851.zip
zebra: on local mac add from the dplane a re-install maybe need as static
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>
-rw-r--r--zebra/zebra_evpn_mac.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/zebra/zebra_evpn_mac.c b/zebra/zebra_evpn_mac.c
index c1e8b2385..f1e289ec6 100644
--- a/zebra/zebra_evpn_mac.c
+++ b/zebra/zebra_evpn_mac.c
@@ -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);