summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_main.c
diff options
context:
space:
mode:
authorSantosh P K <sapk@vmware.com>2020-02-05 18:40:00 +0100
committerSantosh P K <sapk@vmware.com>2020-02-05 18:44:49 +0100
commit128f16f90e017edfefc49d2e09ed06a654f1940c (patch)
tree03ebae86fdf13ed9a02353891f23835564acb04a /ospfd/ospf_main.c
parentMerge pull request #5104 from opensourcerouting/route-map-nbv2 (diff)
downloadfrr-128f16f90e017edfefc49d2e09ed06a654f1940c.tar.xz
frr-128f16f90e017edfefc49d2e09ed06a654f1940c.zip
OSPF: Multi instance broken
Multi instance ospf support was broken due to PR #4564. Adding fix back and extra checks to support multi instance OSPF. Fixes issues #5343 & #5741 Signed-off-by: Santosh P K <sapk@vmware.com>
Diffstat (limited to 'ospfd/ospf_main.c')
-rw-r--r--ospfd/ospf_main.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c
index 7caa79d20..9cde64bc3 100644
--- a/ospfd/ospf_main.c
+++ b/ospfd/ospf_main.c
@@ -143,6 +143,7 @@ FRR_DAEMON_INFO(ospfd, OSPF, .vty_port = OSPF_VTY_PORT,
int main(int argc, char **argv)
{
unsigned short instance = 0;
+ bool created = false;
#ifdef SUPPORT_OSPF_API
/* OSPF apiserver is disabled by default. */
@@ -219,6 +220,17 @@ int main(int argc, char **argv)
/* OSPF errors init */
ospf_error_init();
+ /*
+ * Need to initialize the default ospf structure, so the interface mode
+ * commands can be duly processed if they are received before 'router
+ * ospf', when ospfd is restarted
+ */
+ if (instance && !ospf_get_instance(instance, &created)) {
+ flog_err(EC_OSPF_INIT_FAIL, "OSPF instance init failed: %s",
+ strerror(errno));
+ exit(1);
+ }
+
frr_config_fork();
frr_run(master);