From 2472d3e876dddbbae32e59209c49cefd432bd76b Mon Sep 17 00:00:00 2001 From: Mark Stapp Date: Tue, 16 Nov 2021 13:38:31 -0500 Subject: [PATCH] zebra: shutdown doesn't uninstall zebra's NHGs 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 --- zebra/interface.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/zebra/interface.c b/zebra/interface.c index fbd2aac005..cefc39ab46 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -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) -- 2.39.5