ospf6d: fix refreshing of NSSA/AS-external LSAs after a graceful restart

This commit fixes a bug where self-originated NSSA/AS-External LSAs
would age out about one hour after exiting from the GR mode. The
reason is because received self-originated LSAs aren't registered
for periodic refreshing, so that needs to be done manually. Fix
this by explicitly reoriginating all NSSA/AS-External LSAs while
exiting from the GR mode.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
Renato Westphal 2023-03-01 17:31:56 -03:00
parent 3a94ed5696
commit 5eb2c602aa

View File

@ -127,6 +127,7 @@ static void ospf6_gr_restart_exit(struct ospf6 *ospf6, const char *reason)
{
struct ospf6_area *area;
struct listnode *onode, *anode;
struct ospf6_route *route;
if (IS_DEBUG_OSPF6_GR)
zlog_debug("GR: exiting graceful restart: %s", reason);
@ -162,6 +163,16 @@ static void ospf6_gr_restart_exit(struct ospf6 *ospf6, const char *reason)
}
}
/*
* While all self-originated NSSA and AS-external LSAs were already
* learned from the helping neighbors, we need to reoriginate them in
* order to ensure they will be refreshed periodically.
*/
for (route = ospf6_route_head(ospf6->external_table); route;
route = ospf6_route_next(route))
ospf6_handle_external_lsa_origination(ospf6, route,
&route->prefix);
/*
* 3) The router reruns its OSPF routing calculations, this time
* installing the results into the system forwarding table, and