]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_evpn.c
Merge pull request #4863 from chiragshah6/evpn_dev1
[mirror_frr.git] / bgpd / bgp_evpn.c
index 4d02e39ae22173ce70ef00b64a3cdb8d6ee8efee..6c77f18f33d1f3c4c2b804856ac529f5025af0b0 100644 (file)
@@ -505,7 +505,9 @@ static void unmap_vni_from_rt(struct bgp *bgp, struct bgpevpn *vpn,
 static void form_auto_rt(struct bgp *bgp, vni_t vni, struct list *rtl)
 {
        struct ecommunity_val eval;
-       struct ecommunity *ecomadd;
+       struct ecommunity *ecomadd, *ecom;
+       bool ecom_found = false;
+       struct listnode *node;
 
        if (bgp->advertise_autort_rfc8365)
                vni |= EVPN_AUTORT_VXLAN;
@@ -513,7 +515,12 @@ static void form_auto_rt(struct bgp *bgp, vni_t vni, struct list *rtl)
 
        ecomadd = ecommunity_new();
        ecommunity_add_val(ecomadd, &eval);
-       listnode_add_sort(rtl, ecomadd);
+       for (ALL_LIST_ELEMENTS_RO(rtl, node, ecom))
+               if (ecommunity_cmp(ecomadd, ecom))
+                       ecom_found = true;
+
+       if (!ecom_found)
+               listnode_add_sort(rtl, ecomadd);
 }
 
 /*
@@ -5803,6 +5810,9 @@ int bgp_evpn_local_vni_add(struct bgp *bgp, vni_t vni,
           It needs to be conveyed again to zebra */
        bgp_zebra_advertise_gw_macip(bgp, vpn->advertise_gw_macip, vpn->vni);
 
+       /* advertise svi mac-ip knob to zebra */
+       bgp_zebra_advertise_svi_macip(bgp, vpn->advertise_svi_macip, vpn->vni);
+
        return 0;
 }