From 6a72facbdc3efede9ed6cddba2cb77e67ecedb06 Mon Sep 17 00:00:00 2001 From: Louis Scalbert Date: Wed, 12 Feb 2025 13:49:50 +0100 Subject: [PATCH] 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 Release zebra label registry on unconfiguration. Fixes: d162d5f6f5 ("bgpd: fix hardset l3vpn label available in mpls pool") Signed-off-by: Louis Scalbert (cherry picked from commit d6363625c35a99933bf60c9cf0b79627b468c9f7) --- bgpd/bgpd.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 9a5b4513e9ce..e3911de28a1d 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)