]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_sock.c
lib: enforce vrf_name_to_id by returning default_vrf when name is null
[mirror_frr.git] / pimd / pim_sock.c
index 44e051804a6cb73395ea2569636c502c86f75d02..c4538a4ac52e83d4ccbae8d25b88320c981899f4 100644 (file)
@@ -46,17 +46,11 @@ int pim_socket_raw(int protocol)
 {
        int fd;
 
-       if (pimd_privs.change(ZPRIVS_RAISE))
-               zlog_ferr(LIB_ERR_PRIVILEGES,
-                         "pim_sockek_raw: could not raise privs, %s",
-                         safe_strerror(errno));
+       frr_elevate_privs(&pimd_privs) {
 
-       fd = socket(AF_INET, SOCK_RAW, protocol);
+               fd = socket(AF_INET, SOCK_RAW, protocol);
 
-       if (pimd_privs.change(ZPRIVS_LOWER))
-               zlog_ferr(LIB_ERR_PRIVILEGES,
-                         "pim_socket_raw: could not lower privs, %s",
-                         safe_strerror(errno));
+       }
 
        if (fd < 0) {
                zlog_warn("Could not create raw socket: errno=%d: %s", errno,
@@ -71,18 +65,13 @@ void pim_socket_ip_hdr(int fd)
 {
        const int on = 1;
 
-       if (pimd_privs.change(ZPRIVS_RAISE))
-               zlog_ferr(LIB_ERR_PRIVILEGES, "%s: could not raise privs, %s",
-                         __PRETTY_FUNCTION__, safe_strerror(errno));
+       frr_elevate_privs(&pimd_privs) {
 
-       if (setsockopt(fd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)))
-               zlog_ferr(LIB_ERR_SOCKET,
-                         "%s: Could not turn on IP_HDRINCL option: %s",
-                         __PRETTY_FUNCTION__, safe_strerror(errno));
+               if (setsockopt(fd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)))
+                       zlog_err("%s: Could not turn on IP_HDRINCL option: %s",
+                                __PRETTY_FUNCTION__, safe_strerror(errno));
 
-       if (pimd_privs.change(ZPRIVS_LOWER))
-               zlog_ferr(LIB_ERR_PRIVILEGES, "%s: could not lower privs, %s",
-                         __PRETTY_FUNCTION__, safe_strerror(errno));
+       }
 }
 
 /*
@@ -94,16 +83,12 @@ int pim_socket_bind(int fd, struct interface *ifp)
        int ret = 0;
 #ifdef SO_BINDTODEVICE
 
-       if (pimd_privs.change(ZPRIVS_RAISE))
-               zlog_ferr(LIB_ERR_PRIVILEGES, "%s: could not raise privs, %s",
-                         __PRETTY_FUNCTION__, safe_strerror(errno));
+       frr_elevate_privs(&pimd_privs) {
 
-       ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, ifp->name,
-                        strlen(ifp->name));
+               ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, ifp->name,
+                                strlen(ifp->name));
 
-       if (pimd_privs.change(ZPRIVS_LOWER))
-               zlog_ferr(LIB_ERR_PRIVILEGES, "%s: could not lower privs, %s",
-                         __PRETTY_FUNCTION__, safe_strerror(errno));
+       }
 
 #endif
        return ret;
@@ -165,8 +150,8 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, struct interface *ifp,
                                fd, errno, safe_strerror(errno));
                }
 #else
-               zlog_ferr(
-                       LIB_ERR_DEVELOPMENT,
+               flog_err(
+                       EC_LIB_DEVELOPMENT,
                        "%s %s: Missing IP_PKTINFO and IP_RECVDSTADDR: unable to get dst addr from recvmsg()",
                        __FILE__, __PRETTY_FUNCTION__);
                close(fd);
@@ -303,8 +288,8 @@ int pim_socket_join(int fd, struct in_addr group, struct in_addr ifaddr,
                               sizeof(ifaddr_str)))
                        sprintf(ifaddr_str, "<ifaddr?>");
 
-               zlog_ferr(
-                       LIB_ERR_SOCKET,
+               flog_err(
+                       EC_LIB_SOCKET,
                        "Failure socket joining fd=%d group %s on interface address %s: errno=%d: %s",
                        fd, group_str, ifaddr_str, errno, safe_strerror(errno));
                return ret;