]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/rtadv.c
Merge pull request #2448 from qlyoung/error-reference-cards
[mirror_frr.git] / zebra / rtadv.c
index edc16c549a3df79a4302ce48a0c88e69d6432d8d..43dfca10e6de53c455a95b181581000a3f199173 100644 (file)
@@ -35,6 +35,7 @@
 #include "privs.h"
 #include "vrf.h"
 #include "ns.h"
+#include "lib_errors.h"
 
 #include "zebra/interface.h"
 #include "zebra/rtadv.h"
@@ -180,7 +181,7 @@ static void rtadv_send_packet(int sock, struct interface *ifp)
                adata = calloc(1, CMSG_SPACE(sizeof(struct in6_pktinfo)));
 
                if (adata == NULL) {
-                       zlog_err(
+                       zlog_warn(
                                "rtadv_send_packet: can't malloc control data");
                        exit(-1);
                }
@@ -373,9 +374,10 @@ static void rtadv_send_packet(int sock, struct interface *ifp)
 
        ret = sendmsg(sock, &msg, 0);
        if (ret < 0) {
-               zlog_err("%s(%u): Tx RA failed, socket %u error %d (%s)",
-                        ifp->name, ifp->ifindex, sock, errno,
-                        safe_strerror(errno));
+               flog_err_sys(LIB_ERR_SOCKET,
+                            "%s(%u): Tx RA failed, socket %u error %d (%s)",
+                            ifp->name, ifp->ifindex, sock, errno,
+                            safe_strerror(errno));
        } else
                zif->ra_sent++;
 }
@@ -624,19 +626,15 @@ static int rtadv_read(struct thread *thread)
 
 static int rtadv_make_socket(ns_id_t ns_id)
 {
-       int sock;
+       int sock = -1;
        int ret = 0;
        struct icmp6_filter filter;
 
-       if (zserv_privs.change(ZPRIVS_RAISE))
-               zlog_err("rtadv_make_socket: could not raise privs, %s",
-                        safe_strerror(errno));
+       frr_elevate_privs(&zserv_privs) {
 
-       sock = ns_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6, ns_id);
+               sock = ns_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6, ns_id);
 
-       if (zserv_privs.change(ZPRIVS_LOWER))
-               zlog_err("rtadv_make_socket: could not lower privs, %s",
-                        safe_strerror(errno));
+       }
 
        if (sock < 0) {
                return -1;