summaryrefslogtreecommitdiff
path: root/zebra/zebra_evpn_mh.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_evpn_mh.c')
-rw-r--r--zebra/zebra_evpn_mh.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/zebra/zebra_evpn_mh.c b/zebra/zebra_evpn_mh.c
index 029480eb4a..2567171c5e 100644
--- a/zebra/zebra_evpn_mh.c
+++ b/zebra/zebra_evpn_mh.c
@@ -363,7 +363,7 @@ void zebra_evpn_es_evi_show_vni(struct vty *vty, bool uj, vni_t vni, int detail)
}
/* Initialize the ES tables maintained per-L2_VNI */
-void zebra_evpn_evpn_es_init(zebra_evpn_t *zevpn)
+void zebra_evpn_es_evi_init(zebra_evpn_t *zevpn)
{
/* Initialize the ES-EVI RB tree */
RB_INIT(zebra_es_evi_rb_head, &zevpn->es_evi_rb_tree);
@@ -376,7 +376,7 @@ void zebra_evpn_evpn_es_init(zebra_evpn_t *zevpn)
}
/* Cleanup the ES info maintained per- EVPN */
-void zebra_evpn_evpn_es_cleanup(zebra_evpn_t *zevpn)
+void zebra_evpn_es_evi_cleanup(zebra_evpn_t *zevpn)
{
struct zebra_evpn_es_evi *es_evi;
struct zebra_evpn_es_evi *es_evi_next;
@@ -1356,7 +1356,8 @@ static void zebra_evpn_es_local_info_clear(struct zebra_evpn_es *es)
if (!(es->flags & ZEBRA_EVPNES_LOCAL))
return;
- es->flags &= ~ZEBRA_EVPNES_LOCAL;
+ es->flags &= ~(ZEBRA_EVPNES_LOCAL | ZEBRA_EVPNES_READY_FOR_BGP);
+
/* if there any local macs referring to the ES as dest we
* need to clear the static reference on them
*/
@@ -1613,9 +1614,13 @@ bool zebra_evpn_es_mac_ref(zebra_mac_t *mac, esi_t *esi)
es = zebra_evpn_es_find(esi);
if (!es) {
- es = zebra_evpn_es_new(esi);
- if (IS_ZEBRA_DEBUG_EVPN_MH_ES)
- zlog_debug("auto es %s add on mac ref", es->esi_str);
+ /* If non-zero esi implicitly create a new ES */
+ if (memcmp(esi, zero_esi, sizeof(esi_t))) {
+ es = zebra_evpn_es_new(esi);
+ if (IS_ZEBRA_DEBUG_EVPN_MH_ES)
+ zlog_debug("auto es %s add on mac ref",
+ es->esi_str);
+ }
}
return zebra_evpn_es_mac_ref_entry(mac, es);