mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 12:49:18 +00:00
Merge pull request #16458 from FRRouting/mergify/bp/dev/10.1/pr-16451
lib: mgmtd: fix too early daemon detach of mgmtd (backport #16451)
This commit is contained in:
commit
c717390e8e
30
lib/libfrr.c
30
lib/libfrr.c
@ -1040,7 +1040,17 @@ void frr_config_fork(void)
|
|||||||
zlog_tls_buffer_init();
|
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
|
/* allow explicit override of vty_path in the future
|
||||||
* (not currently set anywhere) */
|
* (not currently set anywhere) */
|
||||||
@ -1063,6 +1073,9 @@ void frr_vty_serv_start(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
vty_serv_start(di->vty_addr, di->vty_port, di->vty_path);
|
vty_serv_start(di->vty_addr, di->vty_port, di->vty_path);
|
||||||
|
|
||||||
|
if (check_detach)
|
||||||
|
frr_check_detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
void frr_vty_serv_stop(void)
|
void frr_vty_serv_stop(void)
|
||||||
@ -1073,16 +1086,6 @@ void frr_vty_serv_stop(void)
|
|||||||
unlink(di->vty_path);
|
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)
|
static void frr_terminal_close(int isexit)
|
||||||
{
|
{
|
||||||
int nullfd;
|
int nullfd;
|
||||||
@ -1168,7 +1171,7 @@ void frr_run(struct event_loop *master)
|
|||||||
char instanceinfo[64] = "";
|
char instanceinfo[64] = "";
|
||||||
|
|
||||||
if (!(di->flags & FRR_MANUAL_VTY_START))
|
if (!(di->flags & FRR_MANUAL_VTY_START))
|
||||||
frr_vty_serv_start();
|
frr_vty_serv_start(false);
|
||||||
|
|
||||||
if (di->instance)
|
if (di->instance)
|
||||||
snprintf(instanceinfo, sizeof(instanceinfo), "instance %u ",
|
snprintf(instanceinfo, sizeof(instanceinfo), "instance %u ",
|
||||||
@ -1206,7 +1209,8 @@ void frr_run(struct event_loop *master)
|
|||||||
close(nullfd);
|
close(nullfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
frr_check_detach();
|
if (!(di->flags & FRR_MANUAL_VTY_START))
|
||||||
|
frr_check_detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end fixed stderr startup logging */
|
/* end fixed stderr startup logging */
|
||||||
|
@ -200,7 +200,7 @@ extern void frr_config_fork(void);
|
|||||||
|
|
||||||
extern void frr_run(struct event_loop *master);
|
extern void frr_run(struct event_loop *master);
|
||||||
extern void frr_detach(void);
|
extern void frr_detach(void);
|
||||||
extern void frr_vty_serv_start(void);
|
extern void frr_vty_serv_start(bool check_detach);
|
||||||
extern void frr_vty_serv_stop(void);
|
extern void frr_vty_serv_stop(void);
|
||||||
|
|
||||||
extern bool frr_zclient_addr(struct sockaddr_storage *sa, socklen_t *sa_len,
|
extern bool frr_zclient_addr(struct sockaddr_storage *sa, socklen_t *sa_len,
|
||||||
|
@ -3502,7 +3502,7 @@ static void vty_mgmt_server_connected(struct mgmt_fe_client *client,
|
|||||||
|
|
||||||
/* Start or stop listening for vty connections */
|
/* Start or stop listening for vty connections */
|
||||||
if (connected)
|
if (connected)
|
||||||
frr_vty_serv_start();
|
frr_vty_serv_start(true);
|
||||||
else
|
else
|
||||||
frr_vty_serv_stop();
|
frr_vty_serv_stop();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user