diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2024-07-24 10:22:53 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-24 10:22:53 -0400 |
| commit | 5bb0b01e3486c25a9412688a8dc1d0ead91036da (patch) | |
| tree | ca67c7e2e3741b905700ce5da2ea937b1af4b6be /lib/libfrr.c | |
| parent | 1fddc91dc6d627016a397f65c01b05ad9e49d623 (diff) | |
| parent | be9a6fc0ea8180a4aaa558c5402ea543427e2e7e (diff) | |
Merge pull request #16451 from LabNConsulting/chopps/fix-early-mgmtd-detach
lib: mgmtd: fix too early daemon detach of mgmtd
Diffstat (limited to 'lib/libfrr.c')
| -rw-r--r-- | lib/libfrr.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/lib/libfrr.c b/lib/libfrr.c index 338a7d0340..328c6ec8b2 100644 --- a/lib/libfrr.c +++ b/lib/libfrr.c @@ -1051,7 +1051,17 @@ void frr_config_fork(void) zlog_tls_buffer_init(); } -void frr_vty_serv_start(void) +static void frr_check_detach(void) +{ + if (nodetach_term || nodetach_daemon) + return; + + if (daemon_ctl_sock != -1) + close(daemon_ctl_sock); + daemon_ctl_sock = -1; +} + +void frr_vty_serv_start(bool check_detach) { /* allow explicit override of vty_path in the future * (not currently set anywhere) */ @@ -1074,6 +1084,9 @@ void frr_vty_serv_start(void) } vty_serv_start(di->vty_addr, di->vty_port, di->vty_path); + + if (check_detach) + frr_check_detach(); } void frr_vty_serv_stop(void) @@ -1084,16 +1097,6 @@ void frr_vty_serv_stop(void) unlink(di->vty_path); } -static void frr_check_detach(void) -{ - if (nodetach_term || nodetach_daemon) - return; - - if (daemon_ctl_sock != -1) - close(daemon_ctl_sock); - daemon_ctl_sock = -1; -} - static void frr_terminal_close(int isexit) { int nullfd; @@ -1179,7 +1182,7 @@ void frr_run(struct event_loop *master) char instanceinfo[64] = ""; if (!(di->flags & FRR_MANUAL_VTY_START)) - frr_vty_serv_start(); + frr_vty_serv_start(false); if (di->instance) snprintf(instanceinfo, sizeof(instanceinfo), "instance %u ", @@ -1217,7 +1220,8 @@ void frr_run(struct event_loop *master) close(nullfd); } - frr_check_detach(); + if (!(di->flags & FRR_MANUAL_VTY_START)) + frr_check_detach(); } /* end fixed stderr startup logging */ |
