summaryrefslogtreecommitdiff
path: root/ospfd/ospf_zebra.c
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2023-05-16 08:37:19 -0400
committerGitHub <noreply@github.com>2023-05-16 08:37:19 -0400
commit425fc1f5b7f42c16d27ecdc602546d4521793d6f (patch)
tree7a12a2bec6d0ab06aa61c54fc738081893eadd41 /ospfd/ospf_zebra.c
parentcf0eeb3dc17d7ff9a4874464e95dbf6d971cb437 (diff)
parent6a3631468d4d5ef2a29f371aab021e6b9a4490a9 (diff)
Merge pull request #12949 from opensourcerouting/ospf-unplanned-gr
OSPF GR for unplanned outages
Diffstat (limited to 'ospfd/ospf_zebra.c')
-rw-r--r--ospfd/ospf_zebra.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 0b770a8364..27d74cd4fc 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -1252,12 +1252,18 @@ static int ospf_zebra_gr_update(struct ospf *ospf, int command,
int ospf_zebra_gr_enable(struct ospf *ospf, uint32_t stale_time)
{
+ if (IS_DEBUG_OSPF_GR)
+ zlog_debug("Zebra enable GR [stale time %u]", stale_time);
+
return ospf_zebra_gr_update(ospf, ZEBRA_CLIENT_GR_CAPABILITIES,
stale_time);
}
int ospf_zebra_gr_disable(struct ospf *ospf)
{
+ if (IS_DEBUG_OSPF_GR)
+ zlog_debug("Zebra disable GR");
+
return ospf_zebra_gr_update(ospf, ZEBRA_CLIENT_GR_DISABLE, 0);
}
@@ -2120,10 +2126,20 @@ int ospf_zebra_label_manager_connect(void)
static void ospf_zebra_connected(struct zclient *zclient)
{
+ struct ospf *ospf;
+ struct listnode *node;
+
/* Send the client registration */
bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER, VRF_DEFAULT);
zclient_send_reg_requests(zclient, VRF_DEFAULT);
+
+ /* Activate graceful restart if configured. */
+ for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
+ if (!ospf->gr_info.restart_support)
+ continue;
+ (void)ospf_zebra_gr_enable(ospf, ospf->gr_info.grace_period);
+ }
}
/*