diff options
Diffstat (limited to 'ripngd/ripngd.c')
| -rw-r--r-- | ripngd/ripngd.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index 565e151c53..934a87b075 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -35,6 +35,7 @@ #include "routemap.h" #include "if_rmap.h" #include "privs.h" +#include "lib_errors.h" #include "ripngd/ripngd.h" #include "ripngd/ripng_route.h" @@ -94,7 +95,7 @@ static int ripng_make_socket(void) sock = socket(AF_INET6, SOCK_DGRAM, 0); if (sock < 0) { - zlog_err("Can't make ripng socket"); + flog_err_sys(LIB_ERR_SOCKET, "Can't make ripng socket"); return sock; } @@ -124,18 +125,14 @@ static int ripng_make_socket(void) #endif /* SIN6_LEN */ ripaddr.sin6_port = htons(RIPNG_PORT_DEFAULT); - if (ripngd_privs.change(ZPRIVS_RAISE)) - zlog_err("ripng_make_socket: could not raise privs"); - - ret = bind(sock, (struct sockaddr *)&ripaddr, sizeof(ripaddr)); - if (ret < 0) { - zlog_err("Can't bind ripng socket: %s.", safe_strerror(errno)); - if (ripngd_privs.change(ZPRIVS_LOWER)) - zlog_err("ripng_make_socket: could not lower privs"); - goto error; + frr_elevate_privs(&ripngd_privs) { + ret = bind(sock, (struct sockaddr *)&ripaddr, sizeof(ripaddr)); + if (ret < 0) { + zlog_err("Can't bind ripng socket: %s.", + safe_strerror(errno)); + goto error; + } } - if (ripngd_privs.change(ZPRIVS_LOWER)) - zlog_err("ripng_make_socket: could not lower privs"); return sock; error: @@ -202,12 +199,14 @@ int ripng_send_packet(caddr_t buf, int bufsize, struct sockaddr_in6 *to, if (ret < 0) { if (to) - zlog_err("RIPng send fail on %s to %s: %s", ifp->name, - inet6_ntoa(to->sin6_addr), - safe_strerror(errno)); + flog_err_sys(LIB_ERR_SOCKET, + "RIPng send fail on %s to %s: %s", + ifp->name, inet6_ntoa(to->sin6_addr), + safe_strerror(errno)); else - zlog_err("RIPng send fail on %s: %s", ifp->name, - safe_strerror(errno)); + flog_err_sys(LIB_ERR_SOCKET, + "RIPng send fail on %s: %s", ifp->name, + safe_strerror(errno)); } return ret; @@ -246,7 +245,7 @@ static int ripng_recv_packet(int sock, uint8_t *buf, int bufsize, if (ret < 0) return ret; - for (cmsgptr = ZCMSG_FIRSTHDR(&msg); cmsgptr != NULL; + for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) { /* I want interface index which this packet comes from. */ if (cmsgptr->cmsg_level == IPPROTO_IPV6 |
