summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/zebra_vxlan.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/zebra/zebra_vxlan.c b/zebra/zebra_vxlan.c
index bb46a1e62e..2d2c0a0bee 100644
--- a/zebra/zebra_vxlan.c
+++ b/zebra/zebra_vxlan.c
@@ -4645,6 +4645,11 @@ int zebra_vxlan_svi_down(struct interface *ifp, struct interface *link_if)
zevpn = zebra_evpn_from_svi(ifp, link_if);
if (zevpn) {
+ /* remove from l3-vni list */
+ zl3vni = zl3vni_from_vrf(zevpn->vrf_id);
+ if (zl3vni)
+ listnode_delete(zl3vni->l2vnis, zevpn);
+
zevpn->svi_if = NULL;
zevpn->vrf_id = VRF_DEFAULT;
@@ -4704,6 +4709,10 @@ int zebra_vxlan_svi_up(struct interface *ifp, struct interface *link_if)
zevpn->svi_if = ifp;
zevpn->vrf_id = ifp->vrf_id;
+ zl3vni = zl3vni_from_vrf(zevpn->vrf_id);
+ if (zl3vni)
+ listnode_add_sort_nodup(zl3vni->l2vnis, zevpn);
+
if (if_is_operative(zevpn->vxlan_if))
zebra_evpn_send_add_to_client(zevpn);