From 2b55509d6c376d578e63fdc2013f071bedb1f3e4 Mon Sep 17 00:00:00 2001 From: Amol Lad Date: Wed, 24 Mar 2021 16:39:27 +1300 Subject: [PATCH] nhrpd: Clear cache when shortcuts are cleared This is required because with the cache entry in place traffic will continue via the shortcut path until the cache entry expires. Signed-off-by: Reuben Dowle --- nhrpd/nhrp_vty.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nhrpd/nhrp_vty.c b/nhrpd/nhrp_vty.c index a032252507..707bb4b44f 100644 --- a/nhrpd/nhrp_vty.c +++ b/nhrpd/nhrp_vty.c @@ -1076,7 +1076,8 @@ static void clear_nhrp_cache(struct nhrp_cache *c, void *data) if (c->cur.type <= NHRP_CACHE_DYNAMIC) { nhrp_cache_update_binding(c, c->cur.type, -1, NULL, 0, NULL, NULL); - ctx->count++; + if (ctx) + ctx->count++; } } @@ -1106,6 +1107,12 @@ DEFUN(clear_nhrp, clear_nhrp_cmd, nhrp_cache_foreach(ifp, clear_nhrp_cache, &ctx); } else { nhrp_shortcut_foreach(ctx.afi, clear_nhrp_shortcut, &ctx); + /* Clear cache also because when a shortcut is cleared then its + * cache entry should be cleared as well (otherwise traffic + * continues via the shortcut path) + */ + FOR_ALL_INTERFACES (vrf, ifp) + nhrp_cache_foreach(ifp, clear_nhrp_cache, NULL); } if (!ctx.count) {