diff options
| author | Louis Scalbert <louis.scalbert@6wind.com> | 2022-04-26 16:57:45 +0200 | 
|---|---|---|
| committer | Louis Scalbert <louis.scalbert@6wind.com> | 2024-02-14 16:39:51 +0100 | 
| commit | b45c5cd959ecf859aa11673ab83d169b76988ba2 (patch) | |
| tree | 896ad07922337b8c4edafeb0999104de6fd870a4 /bgpd/bgp_zebra.c | |
| parent | c102adde305f6cc823134235bad9ad9ede31318d (diff) | |
bgpd: update route leak when vrf state changes
Locally leaked routes remain active after the nexthop VRF interface goes
down.
Update route leaking when the loopback or a VRF interface state change is
received from zebra.
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Diffstat (limited to 'bgpd/bgp_zebra.c')
| -rw-r--r-- | bgpd/bgp_zebra.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index 1172514e52..54b792af29 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -235,6 +235,14 @@ static int bgp_ifp_up(struct interface *ifp)  	hook_call(bgp_vrf_status_changed, bgp, ifp);  	bgp_nht_ifp_up(ifp); +	if (bgp_get_default() && if_is_loopback(ifp)) { +		vpn_leak_zebra_vrf_label_update(bgp, AFI_IP); +		vpn_leak_zebra_vrf_label_update(bgp, AFI_IP6); +		vpn_leak_zebra_vrf_sid_update(bgp, AFI_IP); +		vpn_leak_zebra_vrf_sid_update(bgp, AFI_IP6); +		vpn_leak_postchange_all(); +	} +  	return 0;  } @@ -282,6 +290,14 @@ static int bgp_ifp_down(struct interface *ifp)  	hook_call(bgp_vrf_status_changed, bgp, ifp);  	bgp_nht_ifp_down(ifp); +	if (bgp_get_default() && if_is_loopback(ifp)) { +		vpn_leak_zebra_vrf_label_withdraw(bgp, AFI_IP); +		vpn_leak_zebra_vrf_label_withdraw(bgp, AFI_IP6); +		vpn_leak_zebra_vrf_sid_withdraw(bgp, AFI_IP); +		vpn_leak_zebra_vrf_sid_withdraw(bgp, AFI_IP6); +		vpn_leak_postchange_all(); +	} +  	return 0;  }  | 
