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 <reuben.dowle@4rf.com>
This commit is contained in:
Amol Lad 2021-03-24 16:39:27 +13:00 committed by Reuben Dowle
parent 32dbbf1a10
commit 2b55509d6c

View File

@ -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) {