]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: shutdown doesn't uninstall zebra's NHGs 10079/head
authorMark Stapp <mstapp@nvidia.com>
Tue, 16 Nov 2021 18:38:31 +0000 (13:38 -0500)
committerMark Stapp <mstapp@nvidia.com>
Tue, 8 Mar 2022 21:16:55 +0000 (16:16 -0500)
When an interface goes down, it signals any related NHGs to
re-validate themselves. During zebra shutdown, ensure we remove
any NHGs we've installed.

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
zebra/interface.c

index fbd2aac005843207267306171b45f85f6f15f120..cefc39ab46cc83b092869cadfd6ca32fbae5925f 100644 (file)
@@ -224,9 +224,13 @@ static int if_zebra_new_hook(struct interface *ifp)
 static void if_nhg_dependents_check_valid(struct nhg_hash_entry *nhe)
 {
        zebra_nhg_check_valid(nhe);
-       if (!CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_VALID))
-               /* Assuming uninstalled as well here */
-               UNSET_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED);
+       if (!CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_VALID)) {
+               /* If we're in shutdown, this interface event needs to clean
+                * up installed NHGs, so don't clear that flag directly.
+                */
+               if (!zrouter.in_shutdown)
+                       UNSET_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED);
+       }
 }
 
 static void if_down_nhg_dependents(const struct interface *ifp)