mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 23:37:16 +00:00
bgpd: check nexthop vrf usability
Mark a nexthop as invalid if the origin VRF is unusable, either because it does not exist or its interface is down. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
parent
3430526e11
commit
779077bf56
@ -1052,6 +1052,7 @@ static bool leak_update_nexthop_valid(struct bgp *to_bgp, struct bgp_dest *bn,
|
|||||||
struct bgp_path_info *bpi_ultimate;
|
struct bgp_path_info *bpi_ultimate;
|
||||||
struct bgp *bgp_nexthop;
|
struct bgp *bgp_nexthop;
|
||||||
struct bgp_table *table;
|
struct bgp_table *table;
|
||||||
|
struct interface *ifp;
|
||||||
bool nh_valid;
|
bool nh_valid;
|
||||||
|
|
||||||
bpi_ultimate = bgp_get_imported_bpi_ultimate(source_bpi);
|
bpi_ultimate = bgp_get_imported_bpi_ultimate(source_bpi);
|
||||||
@ -1062,6 +1063,15 @@ static bool leak_update_nexthop_valid(struct bgp *to_bgp, struct bgp_dest *bn,
|
|||||||
else
|
else
|
||||||
bgp_nexthop = bgp_orig;
|
bgp_nexthop = bgp_orig;
|
||||||
|
|
||||||
|
/* The nexthop is invalid if its VRF does not exist */
|
||||||
|
if (bgp_nexthop->vrf_id == VRF_UNKNOWN)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* The nexthop is invalid if its VRF interface is down*/
|
||||||
|
ifp = if_get_vrf_loopback(bgp_nexthop->vrf_id);
|
||||||
|
if (ifp && !if_is_up(ifp))
|
||||||
|
return false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No nexthop tracking for redistributed routes, for
|
* No nexthop tracking for redistributed routes, for
|
||||||
* EVPN-imported routes that get leaked, or for routes
|
* EVPN-imported routes that get leaked, or for routes
|
||||||
|
Loading…
Reference in New Issue
Block a user