summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2025-01-15 14:01:59 +0100
committerGitHub <noreply@github.com>2025-01-15 14:01:59 +0100
commit93ea9748cfa5c5bb5568ecc251fe171234b54c67 (patch)
treef233bfe2215a98f9bb8ae137d4b1b9df3b406fd4
parentMerge pull request #17858 from enkechen-panw/aggr-fix5 (diff)
parentzebra: On Nexthop install failure don't set Installation failed (diff)
downloadfrr-93ea9748cfa5c5bb5568ecc251fe171234b54c67.tar.xz
frr-93ea9748cfa5c5bb5568ecc251fe171234b54c67.zip
Merge pull request #17859 from donaldsharp/active_routes_are_active
Active routes are active
-rw-r--r--zebra/zebra_nhg.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c
index 0a79ed559..712b2534c 100644
--- a/zebra/zebra_nhg.c
+++ b/zebra/zebra_nhg.c
@@ -3454,7 +3454,13 @@ void zebra_nhg_dplane_result(struct zebra_dplane_ctx *ctx)
ZAPI_NHG_INSTALLED);
break;
case ZEBRA_DPLANE_REQUEST_FAILURE:
- UNSET_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED);
+ /*
+ * With a request failure it is unknown what we now know
+ * this is because Zebra has lost track of whether or not
+ * any previous versions of this NHG are in the kernel
+ * or even what those versions were. So at this point
+ * we cannot unset the INSTALLED flag.
+ */
/* If daemon nhg, send it an update */
if (PROTO_OWNED(nhe))
zsend_nhg_notify(nhe->type, nhe->zapi_instance,
@@ -3918,7 +3924,14 @@ void zebra_interface_nhg_reinstall(struct interface *ifp)
__func__, ifp->name);
frr_each (nhg_connected_tree, &zif->nhg_dependents, rb_node_dep) {
+ /*
+ * The nexthop associated with this was set as !ACTIVE
+ * so we need to turn it back to active when we get to
+ * this point again
+ */
+ SET_FLAG(rb_node_dep->nhe->nhg.nexthop->flags, NEXTHOP_FLAG_ACTIVE);
nh = rb_node_dep->nhe->nhg.nexthop;
+
if (zebra_nhg_set_valid_if_active(rb_node_dep->nhe)) {
if (IS_ZEBRA_DEBUG_NHG_DETAIL)
zlog_debug(