mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 02:29:39 +00:00
bgpd: l3vni add-del handle non-defualt rt
During L3VNI add delete, configured non-default route-target is not replayed correctly. Non-default route-target should only be deleted during unconfiguring under bgp vrf instance, during delete of l3vni only unmap from the VRF. during addition of l3vni map back to the VRF Ticket:CM-21482 Testing Done: Bring up evpn configuration with L3vni up with non-default route-target. Perform delete/add of L3vni and validated non-default route-target is mapped back to vrf. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
This commit is contained in:
parent
6c9e36f8e2
commit
530e8a6e7e
@ -5447,11 +5447,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 */
|
||||
@ -5519,12 +5524,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);
|
||||
}
|
||||
|
||||
|
@ -5098,7 +5098,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);
|
||||
}
|
||||
}
|
||||
@ -5113,7 +5113,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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user