diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2024-11-08 11:13:24 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-08 11:13:24 -0500 |
| commit | a1270992b492bf467e1cf51870ae971ef86f0c07 (patch) | |
| tree | c28d8b33a089c95c62ff492884d3a86db2eec4d8 | |
| parent | dd3e867f487a711d1328eed120bac6d1f57cc882 (diff) | |
| parent | 875337f58673ad15bd4caaf4ce2ccc393c3f5b25 (diff) | |
Merge pull request #17394 from opensourcerouting/fix/backport_17376_9.1
bgpd: Clear stale routes with multiple paths (backport)
| -rw-r--r-- | bgpd/bgp_fsm.c | 14 | ||||
| -rw-r--r-- | bgpd/bgp_route.c | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 4f519dc197..69cc78e0f8 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -685,6 +685,11 @@ static void bgp_set_llgr_stale(struct peer *peer, afi_t afi, safi_t safi) COMMUNITY_NO_LLGR)) continue; + if (bgp_attr_get_community(pi->attr) && + community_include(bgp_attr_get_community(pi->attr), + COMMUNITY_LLGR_STALE)) + continue; + if (bgp_debug_neighbor_events(peer)) zlog_debug( "%pBP Long-lived set stale community (LLGR_STALE) for: %pFX", @@ -695,8 +700,6 @@ static void bgp_set_llgr_stale(struct peer *peer, afi_t afi, safi_t safi) pi->attr = bgp_attr_intern(&attr); bgp_recalculate_afi_safi_bestpaths( peer->bgp, afi, safi); - - break; } } } else { @@ -713,6 +716,11 @@ static void bgp_set_llgr_stale(struct peer *peer, afi_t afi, safi_t safi) COMMUNITY_NO_LLGR)) continue; + if (bgp_attr_get_community(pi->attr) && + community_include(bgp_attr_get_community(pi->attr), + COMMUNITY_LLGR_STALE)) + continue; + if (bgp_debug_neighbor_events(peer)) zlog_debug( "%pBP Long-lived set stale community (LLGR_STALE) for: %pFX", @@ -723,8 +731,6 @@ static void bgp_set_llgr_stale(struct peer *peer, afi_t afi, safi_t safi) pi->attr = bgp_attr_intern(&attr); bgp_recalculate_afi_safi_bestpaths(peer->bgp, afi, safi); - - break; } } } diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index c8daa0d1b9..021642e7db 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -5856,7 +5856,6 @@ void bgp_clear_stale_route(struct peer *peer, afi_t afi, safi_t safi) vpn_leak_to_vrf_withdraw(pi); bgp_rib_remove(rm, pi, peer, afi, safi); - break; } } } else { @@ -5885,7 +5884,6 @@ void bgp_clear_stale_route(struct peer *peer, afi_t afi, safi_t safi) pi); bgp_rib_remove(dest, pi, peer, afi, safi); - break; } } } |
