diff options
Diffstat (limited to 'src/ipcpd/normal/main.c')
-rw-r--r-- | src/ipcpd/normal/main.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/src/ipcpd/normal/main.c b/src/ipcpd/normal/main.c index 7acf3046..82381ba7 100644 --- a/src/ipcpd/normal/main.c +++ b/src/ipcpd/normal/main.c @@ -151,7 +151,8 @@ static int boot_components(void) return -1; } - if (fmgr_start()) { + if (fmgr_init()) { + log_err("Failed to initialize flow manager component."); frct_fini(); dir_fini(); ribmgr_fini(); @@ -160,9 +161,19 @@ static int boot_components(void) return -1; } + if (fmgr_start()) { + fmgr_fini(); + frct_fini(); + dir_fini(); + ribmgr_fini(); + addr_auth_fini(); + log_err("Failed to start flow manager."); + return -1; + } if (enroll_start()) { fmgr_stop(); + fmgr_fini(); frct_fini(); dir_fini(); ribmgr_fini(); @@ -177,6 +188,7 @@ static int boot_components(void) ipcp_set_state(IPCP_INIT); enroll_stop(); fmgr_stop(); + fmgr_fini(); frct_fini(); dir_fini(); ribmgr_fini(); @@ -198,6 +210,8 @@ void shutdown_components(void) fmgr_stop(); + fmgr_fini(); + dir_fini(); ribmgr_fini(); @@ -439,23 +453,11 @@ int main(int argc, exit(EXIT_FAILURE); } - if (fmgr_init()) { - log_err("Failed to initialize flow manager component."); - ipcp_create_r(getpid(), -1); - enroll_fini(); - connmgr_fini(); - rib_fini(); - irm_unbind_api(getpid(), ipcpi.name); - ipcp_fini(); - exit(EXIT_FAILURE); - } - pthread_sigmask(SIG_BLOCK, &sigset, NULL); if (ipcp_boot() < 0) { log_err("Failed to boot IPCP."); ipcp_create_r(getpid(), -1); - fmgr_fini(); enroll_fini(); connmgr_fini(); rib_fini(); @@ -470,7 +472,6 @@ int main(int argc, log_err("Failed to notify IRMd we are initialized."); ipcp_set_state(IPCP_NULL); ipcp_shutdown(); - fmgr_fini(); enroll_fini(); connmgr_fini(); rib_fini(); @@ -484,8 +485,6 @@ int main(int argc, if (ipcp_get_state() == IPCP_SHUTDOWN) shutdown_components(); - fmgr_fini(); - enroll_fini(); connmgr_fini(); |