]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #3448 from chiragshah6/evpn_dev1
authorSri Mohana Singamsetty <srimohans@gmail.com>
Wed, 19 Dec 2018 02:12:18 +0000 (18:12 -0800)
committerGitHub <noreply@github.com>
Wed, 19 Dec 2018 02:12:18 +0000 (18:12 -0800)
bgpd: l3vni add-del handle non-defualt route-target

bgpd/bgp_evpn.c
bgpd/bgp_evpn_vty.c

index da91f4623cba532dbd4a44cd2fb88173d7b1f25c..7f6d34808f1f9eb26aabd833c70adba79f799b17 100644 (file)
@@ -5459,11 +5459,16 @@ int bgp_evpn_local_l3vni_add(vni_t l3vni, vrf_id_t vrf_id, struct ethaddr *rmac,
        if (filter)
                SET_FLAG(bgp_vrf->vrf_flags, BGP_VRF_L3VNI_PREFIX_ROUTES_ONLY);
 
-       /* auto derive RD/RT */
+       /* Map auto derive or configured RTs */
        if (!CHECK_FLAG(bgp_vrf->vrf_flags, BGP_VRF_IMPORT_RT_CFGD))
                evpn_auto_rt_import_add_for_vrf(bgp_vrf);
+       else
+               bgp_evpn_map_vrf_to_its_rts(bgp_vrf);
+
        if (!CHECK_FLAG(bgp_vrf->vrf_flags, BGP_VRF_EXPORT_RT_CFGD))
                evpn_auto_rt_export_add_for_vrf(bgp_vrf);
+
+       /* auto derive RD */
        bgp_evpn_derive_auto_rd_for_vrf(bgp_vrf);
 
        /* link all corresponding l2vnis */
@@ -5531,12 +5536,16 @@ int bgp_evpn_local_l3vni_del(vni_t l3vni, vrf_id_t vrf_id)
        /* remove the Rmac from the BGP vrf */
        memset(&bgp_vrf->rmac, 0, sizeof(struct ethaddr));
 
-       /* delete RD/RT */
+       /* remove default import RT or Unmap non-default import RT */
        if (!list_isempty(bgp_vrf->vrf_import_rtl)) {
                bgp_evpn_unmap_vrf_from_its_rts(bgp_vrf);
-               list_delete_all_node(bgp_vrf->vrf_import_rtl);
+               if (!CHECK_FLAG(bgp_vrf->vrf_flags, BGP_VRF_IMPORT_RT_CFGD))
+                       list_delete_all_node(bgp_vrf->vrf_import_rtl);
        }
-       if (!list_isempty(bgp_vrf->vrf_export_rtl)) {
+
+       /* remove default export RT */
+       if (!list_isempty(bgp_vrf->vrf_export_rtl) &&
+           !CHECK_FLAG(bgp_vrf->vrf_flags, BGP_VRF_EXPORT_RT_CFGD)) {
                list_delete_all_node(bgp_vrf->vrf_export_rtl);
        }
 
index c6db45d7d34654ecbf52915270324a70c675a8ec..13f899e8806245f0159cd1997df73d23cc1deb55 100644 (file)
@@ -5104,7 +5104,7 @@ void bgp_config_write_evpn_info(struct vty *vty, struct bgp *bgp, afi_t afi,
                                       ecom)) {
                        ecom_str = ecommunity_ecom2str(
                                ecom, ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
-                       vty_out(vty, "   route-target import %s\n", ecom_str);
+                       vty_out(vty, "  route-target import %s\n", ecom_str);
                        XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
                }
        }
@@ -5119,7 +5119,7 @@ void bgp_config_write_evpn_info(struct vty *vty, struct bgp *bgp, afi_t afi,
                                       ecom)) {
                        ecom_str = ecommunity_ecom2str(
                                ecom, ECOMMUNITY_FORMAT_ROUTE_MAP, 0);
-                       vty_out(vty, "   route-target export %s\n", ecom_str);
+                       vty_out(vty, "  route-target export %s\n", ecom_str);
                        XFREE(MTYPE_ECOMMUNITY_STR, ecom_str);
                }
        }