diff options
| author | Carmine Scarpitta <cscarpit@cisco.com> | 2025-02-03 14:52:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-03 14:52:00 +0100 |
| commit | 0768c620e088113a4e9fe9e28f5f28f4855d6476 (patch) | |
| tree | f4be7e8c5468e331eb78952c0b62522400793cf3 /bgpd | |
| parent | 4f43a33d421973d8229561bae7872770ea254e58 (diff) | |
| parent | 90fe717352296c9d33d89f3e30a45bd07fdeb02f (diff) | |
Merge pull request #17913 from Sokolmish/bgp-sid-release
bgpd: Release SID on router deletion
Diffstat (limited to 'bgpd')
| -rw-r--r-- | bgpd/bgpd.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index edf90d3dd8..efb2c00fa5 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -3988,6 +3988,7 @@ int bgp_delete(struct bgp *bgp) uint32_t a_ann_cnt = 0, a_l2_cnt = 0, a_l3_cnt = 0; struct bgp *bgp_to_proc = NULL; struct bgp *bgp_to_proc_next = NULL; + struct bgp *bgp_default = bgp_get_default(); assert(bgp); @@ -4041,13 +4042,26 @@ int bgp_delete(struct bgp *bgp) bgp_soft_reconfig_table_task_cancel(bgp, NULL, NULL); /* make sure we withdraw any exported routes */ - vpn_leak_prechange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP, bgp_get_default(), - bgp); - vpn_leak_prechange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP6, bgp_get_default(), - bgp); + vpn_leak_prechange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP, bgp_default, bgp); + vpn_leak_prechange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP6, bgp_default, bgp); bgp_vpn_leak_unimport(bgp); + /* + * Release SRv6 SIDs, like it's done in `vpn_leak_postchange()` + * and bgp_sid_vpn_export_cmd/af_sid_vpn_export_cmd commands. + */ + bgp->tovpn_sid_index = 0; + UNSET_FLAG(bgp->vrf_flags, BGP_VRF_TOVPN_SID_AUTO); + delete_vrf_tovpn_sid_per_vrf(bgp_default, bgp); + for (afi = AFI_IP; afi < AFI_MAX; afi++) { + bgp->vpn_policy[afi].tovpn_sid_index = 0; + UNSET_FLAG(bgp->vpn_policy[afi].flags, BGP_VPN_POLICY_TOVPN_SID_AUTO); + delete_vrf_tovpn_sid_per_af(bgp_default, bgp, afi); + + vpn_leak_zebra_vrf_sid_withdraw(bgp, afi); + } + bgp_vpn_release_label(bgp, AFI_IP, true); bgp_vpn_release_label(bgp, AFI_IP6, true); |
