]> git.proxmox.com Git - mirror_frr.git/blobdiff - ripd/ripd.c
*: use frr_elevate_privs() (1/2: coccinelle)
[mirror_frr.git] / ripd / ripd.c
index 274b9540b6876feb95e22e6e42f287df9111823e..8ee16596795050fb5ff3de9fa2c178aabd067968 100644 (file)
@@ -1357,31 +1357,23 @@ static int rip_create_socket(void)
        setsockopt_ipv4_tos(sock, IPTOS_PREC_INTERNETCONTROL);
 #endif
 
-       if (ripd_privs.change(ZPRIVS_RAISE))
-               flog_err(LIB_ERR_PRIVILEGES,
-                         "rip_create_socket: could not raise privs");
-       setsockopt_so_recvbuf(sock, RIP_UDP_RCV_BUF);
-       if ((ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr))) < 0)
+       frr_elevate_privs(&ripd_privs) {
+               setsockopt_so_recvbuf(sock, RIP_UDP_RCV_BUF);
+               if ((ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr))) < 0)
 
-       {
-               int save_errno = errno;
-               if (ripd_privs.change(ZPRIVS_LOWER))
-                       flog_err(LIB_ERR_PRIVILEGES,
-                                 "rip_create_socket: could not lower privs");
-
-               flog_err_sys(LIB_ERR_SOCKET,
-                            "%s: Can't bind socket %d to %s port %d: %s",
-                            __func__, sock, inet_ntoa(addr.sin_addr),
-                            (int)ntohs(addr.sin_port),
-                            safe_strerror(save_errno));
-
-               close(sock);
-               return ret;
-       }
+               {
+                       int save_errno = errno;
+
+                       zlog_err("%s: Can't bind socket %d to %s port %d: %s",
+                                __func__,
+                                sock, inet_ntoa(addr.sin_addr),
+                                (int)ntohs(addr.sin_port), safe_strerror(save_errno));
 
-       if (ripd_privs.change(ZPRIVS_LOWER))
-               flog_err(LIB_ERR_PRIVILEGES,
-                         "rip_create_socket: could not lower privs");
+                       close(sock);
+                       return ret;
+               }
+
+       }
 
        return sock;
 }