diff options
Diffstat (limited to 'zebra/kernel_socket.c')
| -rw-r--r-- | zebra/kernel_socket.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 71d709e72d..78e25e7626 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -39,6 +39,7 @@ #include "rib.h" #include "privs.h" #include "vrf.h" +#include "lib_errors.h" #include "zebra/rt.h" #include "zebra/interface.h" @@ -46,6 +47,7 @@ #include "zebra/debug.h" #include "zebra/kernel_socket.h" #include "zebra/rib.h" +#include "zebra/zebra_errors.h" extern struct zebra_privs_t zserv_privs; @@ -407,8 +409,9 @@ int ifm_read(struct if_msghdr *ifm) /* paranoia: sanity check structure */ if (ifm->ifm_msglen < sizeof(struct if_msghdr)) { - zlog_err("ifm_read: ifm->ifm_msglen %d too short\n", - ifm->ifm_msglen); + flog_err(ZEBRA_ERR_NETLINK_LENGTH_ERROR, + "ifm_read: ifm->ifm_msglen %d too short\n", + ifm->ifm_msglen); return -1; } @@ -1382,15 +1385,11 @@ static int kernel_read(struct thread *thread) /* Make routing socket. */ static void routing_socket(struct zebra_ns *zns) { - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("routing_socket: Can't raise privileges"); - - routing_sock = - ns_socket(AF_ROUTE, SOCK_RAW, 0, zns->ns_id); + frr_elevate_privs(&zserv_privs) { + routing_sock = ns_socket(AF_ROUTE, SOCK_RAW, 0, zns->ns_id); + } if (routing_sock < 0) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("routing_socket: Can't lower privileges"); zlog_warn("Can't init kernel routing socket"); return; } @@ -1402,9 +1401,6 @@ static void routing_socket(struct zebra_ns *zns) /*if (fcntl (routing_sock, F_SETFL, O_NONBLOCK) < 0) zlog_warn ("Can't set O_NONBLOCK to routing socket");*/ - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("routing_socket: Can't lower privileges"); - /* kernel_read needs rewrite. */ thread_add_read(zebrad.master, kernel_read, NULL, routing_sock, NULL); } |
