mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 11:25:41 +00:00
[zebra] do not touch socket before pidfile locking
Move zserv socket creation code into zebra_zserv_socket_init() and call it only after pidfile lock has been acquired exclusively. This keeps subsequent zebra daemons from deleting the working socket of an already running process (bug #403).
This commit is contained in:
parent
5b40b1b57e
commit
97be79f9d3
@ -382,6 +382,9 @@ main (int argc, char **argv)
|
|||||||
/* Needed for BSD routing socket. */
|
/* Needed for BSD routing socket. */
|
||||||
pid = getpid ();
|
pid = getpid ();
|
||||||
|
|
||||||
|
/* This must be done only after locking pidfile (bug #403). */
|
||||||
|
zebra_zserv_socket_init ();
|
||||||
|
|
||||||
/* Make vty server socket. */
|
/* Make vty server socket. */
|
||||||
vty_serv_sock (vty_addr, vty_port, ZEBRA_VTYSH_PATH);
|
vty_serv_sock (vty_addr, vty_port, ZEBRA_VTYSH_PATH);
|
||||||
|
|
||||||
|
@ -1704,13 +1704,6 @@ zebra_init (void)
|
|||||||
/* Client list init. */
|
/* Client list init. */
|
||||||
zebrad.client_list = list_new ();
|
zebrad.client_list = list_new ();
|
||||||
|
|
||||||
/* Make zebra server socket. */
|
|
||||||
#ifdef HAVE_TCP_ZEBRA
|
|
||||||
zebra_serv ();
|
|
||||||
#else
|
|
||||||
zebra_serv_un (ZEBRA_SERV_PATH);
|
|
||||||
#endif /* HAVE_TCP_ZEBRA */
|
|
||||||
|
|
||||||
/* Install configuration write function. */
|
/* Install configuration write function. */
|
||||||
install_node (&table_node, config_write_table);
|
install_node (&table_node, config_write_table);
|
||||||
install_node (&forwarding_node, config_write_forwarding);
|
install_node (&forwarding_node, config_write_forwarding);
|
||||||
@ -1737,3 +1730,14 @@ zebra_init (void)
|
|||||||
/* Route-map */
|
/* Route-map */
|
||||||
zebra_route_map_init ();
|
zebra_route_map_init ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make zebra server socket, wiping any existing one (see bug #403). */
|
||||||
|
void
|
||||||
|
zebra_zserv_socket_init (void)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_TCP_ZEBRA
|
||||||
|
zebra_serv ();
|
||||||
|
#else
|
||||||
|
zebra_serv_un (ZEBRA_SERV_PATH);
|
||||||
|
#endif /* HAVE_TCP_ZEBRA */
|
||||||
|
}
|
||||||
|
@ -89,6 +89,7 @@ struct zebra_t
|
|||||||
/* Prototypes. */
|
/* Prototypes. */
|
||||||
extern void zebra_init (void);
|
extern void zebra_init (void);
|
||||||
extern void zebra_if_init (void);
|
extern void zebra_if_init (void);
|
||||||
|
extern void zebra_zserv_socket_init (void);
|
||||||
extern void hostinfo_get (void);
|
extern void hostinfo_get (void);
|
||||||
extern void rib_init (void);
|
extern void rib_init (void);
|
||||||
extern void interface_list (void);
|
extern void interface_list (void);
|
||||||
|
Loading…
Reference in New Issue
Block a user