diff options
| author | Sri Mohana Singamsetty <srimohans@gmail.com> | 2018-12-18 18:12:18 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-18 18:12:18 -0800 |
| commit | f944fe9b004be9c6076f2fed3004a85fc284cad1 (patch) | |
| tree | 97ebe60a989179418831c0f893d450927c11cb31 | |
| parent | 38a5232499f002cc0830f86c9157f78cd8ae158e (diff) | |
| parent | 530e8a6e7e94740ef0a6ce8d3acf1e925ed328cf (diff) | |
Merge pull request #3448 from chiragshah6/evpn_dev1
bgpd: l3vni add-del handle non-defualt route-target
| -rw-r--r-- | bgpd/bgp_evpn.c | 17 | ||||
| -rw-r--r-- | bgpd/bgp_evpn_vty.c | 4 |
2 files changed, 15 insertions, 6 deletions
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c index da91f4623c..7f6d34808f 100644 --- a/bgpd/bgp_evpn.c +++ b/bgpd/bgp_evpn.c @@ -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); } diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index c6db45d7d3..13f899e880 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -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); } } |
