]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: ignore sync updates from bgp if the dest ES is not ready
authorAnuradha Karuppiah <anuradhak@nvidia.com>
Tue, 10 Aug 2021 15:56:55 +0000 (08:56 -0700)
committerAnuradha Karuppiah <anuradhak@nvidia.com>
Fri, 15 Oct 2021 17:43:41 +0000 (10:43 -0700)
In the window immediately after an ES deletion bgpd can send MAC-IP updates
using that ES. Zebra needs to ignore these updates to prevent creation
of stale entries.

Ticket: #2668488

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

index d5e043eea8596e1c7cb62096d673013dc02b9728..4006e1fed51c8d8b243175093e0af14da795cac1 100644 (file)
@@ -1423,8 +1423,24 @@ void zebra_evpn_rem_macip_add(vni_t vni, const struct ethaddr *macaddr,
         * REMOTE - if ES is not local
         */
        if (flags & ZEBRA_MACIP_TYPE_SYNC_PATH) {
-               zebra_evpn_process_sync_macip_add(zevpn, macaddr, ipa_len,
-                                                 ipaddr, flags, seq, esi);
+               struct zebra_evpn_es *es;
+
+               es = zebra_evpn_es_find(esi);
+               if (es && (es->flags & ZEBRA_EVPNES_READY_FOR_BGP)) {
+                       zebra_evpn_process_sync_macip_add(zevpn, macaddr,
+                                                         ipa_len, ipaddr,
+                                                         flags, seq, esi);
+               } else {
+                       if (IS_ZEBRA_DEBUG_EVPN_MH_ES) {
+                               char esi_str[ESI_STR_LEN];
+
+                               esi_to_str(esi, esi_str, sizeof(esi_str));
+                               zlog_debug(
+                                       "Ignore sync-macip add; ES %s is not ready",
+                                       esi_str);
+                       }
+               }
+
                return;
        }