diff options
| author | Louis Scalbert <louis.scalbert@6wind.com> | 2025-02-12 13:49:50 +0100 | 
|---|---|---|
| committer | Mergify <37929162+mergify[bot]@users.noreply.github.com> | 2025-02-13 19:09:09 +0000 | 
| commit | 6a72facbdc3efede9ed6cddba2cb77e67ecedb06 (patch) | |
| tree | 8c973a774cd8691b38a450e8bcc10699c31c606a | |
| parent | dcebe85aa699cf52aed4b5e7cd4c0e466c734ada (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.c | 10 | 
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)  | 
