summaryrefslogtreecommitdiff
path: root/zebra/zebra_evpn.c
diff options
context:
space:
mode:
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2020-10-01 14:19:52 -0700
committerAnuradha Karuppiah <anuradhak@nvidia.com>2020-12-21 08:41:17 -0800
commit16de1338a9c58c6dcbf98e7064c57708d1e91d68 (patch)
tree7b1313cb363d2c03a4522e6c0cc1be4ea3f5dc0d /zebra/zebra_evpn.c
parent6c111b51a1647ca994b061c0adc9c65023ea6814 (diff)
zebra: accept bgp remote mac-ip update if the higher-seq-local mac is not bgp-ready
If a local-MAC or local-neigh is not active locally it is not sent to BGP. At this point if BGP rxes a remote route it accepts it and installs in zebra. Zebra was rejecting BGP's update if it had a higher seq local (inactive) entry. This would result in bgp and zebra falling out of sync. In some cases zebra would delete the local-inactive entries in sometime (as a part of the dplane/kernel garbage collection). This would leave zebra with missing remote entries (which were still present in bgpd). This change allows lower-seq BGP updates to overwrite zebra's local entry if that entry happens to be local-inactive. Note: This logic was already in use for sync-mac-ip updates. Extended the same logic to remote-mac-ip updates. Ticket: CM-31626 Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'zebra/zebra_evpn.c')
-rw-r--r--zebra/zebra_evpn.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/zebra/zebra_evpn.c b/zebra/zebra_evpn.c
index 477e046dd8..b232c664bc 100644
--- a/zebra/zebra_evpn.c
+++ b/zebra/zebra_evpn.c
@@ -1336,7 +1336,8 @@ zebra_evpn_process_sync_macip_add(zebra_evpn_t *zevpn, struct ethaddr *macaddr,
if (ipa_len) {
n = zebra_evpn_neigh_lookup(zevpn, ipaddr);
if (n
- && !zebra_evpn_neigh_is_bgp_seq_ok(zevpn, n, macaddr, seq))
+ && !zebra_evpn_neigh_is_bgp_seq_ok(zevpn, n, macaddr, seq,
+ true))
return;
}