summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Scalbert <louis.scalbert@6wind.com>2025-02-12 13:49:50 +0100
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2025-02-13 19:09:09 +0000
commit6a72facbdc3efede9ed6cddba2cb77e67ecedb06 (patch)
tree8c973a774cd8691b38a450e8bcc10699c31c606a
parentdcebe85aa699cf52aed4b5e7cd4c0e466c734ada (diff)
bgpd: release manual vpn label on instance deletion
When a BGP instance with a manually assigned VPN label is deleted, the label is not released from the Zebra label registry. As a result, reapplying a configuration with the same manual label leads to VPN prefix export failures. For example, with the following configuration: > router bgp 65000 vrf BLUE > address-family ipv4 unicast > label vpn export <int> Release zebra label registry on unconfiguration. Fixes: d162d5f6f5 ("bgpd: fix hardset l3vpn label available in mpls pool") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> (cherry picked from commit d6363625c35a99933bf60c9cf0b79627b468c9f7)
-rw-r--r--bgpd/bgpd.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 9a5b4513e9..e3911de28a 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -4063,9 +4063,19 @@ int bgp_delete(struct bgp *bgp)
vpn_leak_zebra_vrf_sid_withdraw(bgp, afi);
}
+ /* release auto vpn labels */
bgp_vpn_release_label(bgp, AFI_IP, true);
bgp_vpn_release_label(bgp, AFI_IP6, true);
+ /* release manual vpn labels */
+ for (afi = AFI_IP; afi < AFI_MAX; afi++) {
+ if (!CHECK_FLAG(bgp->vpn_policy[afi].flags, BGP_VPN_POLICY_TOVPN_LABEL_MANUAL_REG))
+ continue;
+ bgp_zebra_release_label_range(bgp->vpn_policy[afi].tovpn_label,
+ bgp->vpn_policy[afi].tovpn_label);
+ UNSET_FLAG(bgp->vpn_policy[afi].flags, BGP_VPN_POLICY_TOVPN_LABEL_MANUAL_REG);
+ }
+
hook_call(bgp_inst_delete, bgp);
FOREACH_AFI_SAFI (afi, safi)