zebra: Make zebrad.sock zserv.c private data

The zebra.sock data is the listener socket for the zapi protocol.
The rest of the zebra router does not need to see this data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2019-01-11 13:52:09 -05:00
parent 161e9ab7e2
commit cc3d883445
2 changed files with 17 additions and 17 deletions

View File

@ -68,6 +68,9 @@
/* privileges */ /* privileges */
extern struct zebra_privs_t zserv_privs; extern struct zebra_privs_t zserv_privs;
/* The listener socket for clients connecting to us */
static int zsock;
/* /*
* Client thread events. * Client thread events.
* *
@ -784,16 +787,16 @@ void zserv_start(char *path)
old_mask = umask(0077); old_mask = umask(0077);
/* Make UNIX domain socket. */ /* Make UNIX domain socket. */
zebrad.sock = socket(sa.ss_family, SOCK_STREAM, 0); zsock = socket(sa.ss_family, SOCK_STREAM, 0);
if (zebrad.sock < 0) { if (zsock < 0) {
flog_err_sys(EC_LIB_SOCKET, "Can't create zserv socket: %s", flog_err_sys(EC_LIB_SOCKET, "Can't create zserv socket: %s",
safe_strerror(errno)); safe_strerror(errno));
return; return;
} }
if (sa.ss_family != AF_UNIX) { if (sa.ss_family != AF_UNIX) {
sockopt_reuseaddr(zebrad.sock); sockopt_reuseaddr(zsock);
sockopt_reuseport(zebrad.sock); sockopt_reuseport(zsock);
} else { } else {
struct sockaddr_un *suna = (struct sockaddr_un *)&sa; struct sockaddr_un *suna = (struct sockaddr_un *)&sa;
if (suna->sun_path[0]) if (suna->sun_path[0])
@ -801,28 +804,28 @@ void zserv_start(char *path)
} }
frr_elevate_privs(&zserv_privs) { frr_elevate_privs(&zserv_privs) {
setsockopt_so_recvbuf(zebrad.sock, 1048576); setsockopt_so_recvbuf(zsock, 1048576);
setsockopt_so_sendbuf(zebrad.sock, 1048576); setsockopt_so_sendbuf(zsock, 1048576);
} }
frr_elevate_privs((sa.ss_family != AF_UNIX) ? &zserv_privs : NULL) { frr_elevate_privs((sa.ss_family != AF_UNIX) ? &zserv_privs : NULL) {
ret = bind(zebrad.sock, (struct sockaddr *)&sa, sa_len); ret = bind(zsock, (struct sockaddr *)&sa, sa_len);
} }
if (ret < 0) { if (ret < 0) {
flog_err_sys(EC_LIB_SOCKET, "Can't bind zserv socket on %s: %s", flog_err_sys(EC_LIB_SOCKET, "Can't bind zserv socket on %s: %s",
path, safe_strerror(errno)); path, safe_strerror(errno));
close(zebrad.sock); close(zsock);
zebrad.sock = -1; zsock = -1;
return; return;
} }
ret = listen(zebrad.sock, 5); ret = listen(zsock, 5);
if (ret < 0) { if (ret < 0) {
flog_err_sys(EC_LIB_SOCKET, flog_err_sys(EC_LIB_SOCKET,
"Can't listen to zserv socket %s: %s", path, "Can't listen to zserv socket %s: %s", path,
safe_strerror(errno)); safe_strerror(errno));
close(zebrad.sock); close(zsock);
zebrad.sock = -1; zsock = -1;
return; return;
} }
@ -835,7 +838,7 @@ void zserv_event(struct zserv *client, enum zserv_event event)
{ {
switch (event) { switch (event) {
case ZSERV_ACCEPT: case ZSERV_ACCEPT:
thread_add_read(zrouter.master, zserv_accept, NULL, zebrad.sock, thread_add_read(zrouter.master, zserv_accept, NULL, zsock,
NULL); NULL);
break; break;
case ZSERV_PROCESS_MESSAGES: case ZSERV_PROCESS_MESSAGES:
@ -1071,7 +1074,7 @@ void zserv_init(void)
zrouter.client_list = list_new(); zrouter.client_list = list_new();
/* Misc init. */ /* Misc init. */
zebrad.sock = -1; zsock = -1;
install_element(ENABLE_NODE, &show_zebra_client_cmd); install_element(ENABLE_NODE, &show_zebra_client_cmd);
install_element(ENABLE_NODE, &show_zebra_client_summary_cmd); install_element(ENABLE_NODE, &show_zebra_client_summary_cmd);

View File

@ -175,9 +175,6 @@ DECLARE_KOOH(zserv_client_close, (struct zserv *client), (client));
/* Zebra instance */ /* Zebra instance */
struct zebra_t { struct zebra_t {
/* Socket */
int sock;
/* default table */ /* default table */
uint32_t rtm_table_default; uint32_t rtm_table_default;