summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2024-11-08 11:13:24 -0500
committerGitHub <noreply@github.com>2024-11-08 11:13:24 -0500
commita1270992b492bf467e1cf51870ae971ef86f0c07 (patch)
treec28d8b33a089c95c62ff492884d3a86db2eec4d8
parentdd3e867f487a711d1328eed120bac6d1f57cc882 (diff)
parent875337f58673ad15bd4caaf4ce2ccc393c3f5b25 (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.c14
-rw-r--r--bgpd/bgp_route.c2
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;
}
}
}