]> git.proxmox.com Git - mirror_frr.git/blobdiff - ldpd/socket.c
Merge pull request #8242 from opensourcerouting/format-warning-fix
[mirror_frr.git] / ldpd / socket.c
index bebd7a7d6145d3e93db3a0ebe3cca71480de1bb8..e865707d444834ae8cc244afa8673fb1088f5ffd 100644 (file)
@@ -79,7 +79,7 @@ ldp_create_socket(int af, enum socket_type type)
                sock_set_bindany(fd, 1);
                break;
        }
-       frr_elevate_privs(&ldpd_privs) {
+       frr_with_privs(&ldpd_privs) {
                if (sock_set_reuse(fd, 1) == -1) {
                        close(fd);
                        return (-1);
@@ -209,7 +209,7 @@ sock_set_nonblock(int fd)
 
        flags |= O_NONBLOCK;
 
-       if ((flags = fcntl(fd, F_SETFL, flags)) == -1)
+       if (fcntl(fd, F_SETFL, flags) == -1)
                fatal("fcntl F_SETFL");
 }
 
@@ -223,7 +223,7 @@ sock_set_cloexec(int fd)
 
        flags |= FD_CLOEXEC;
 
-       if ((flags = fcntl(fd, F_SETFD, flags)) == -1)
+       if (fcntl(fd, F_SETFD, flags) == -1)
                fatal("fcntl F_SETFD");
 }
 
@@ -254,7 +254,7 @@ int
 sock_set_bindany(int fd, int enable)
 {
 #ifdef HAVE_SO_BINDANY
-       frr_elevate_privs(&ldpd_privs) {
+       frr_with_privs(&ldpd_privs) {
                if (setsockopt(fd, SOL_SOCKET, SO_BINDANY, &enable,
                               sizeof(int)) < 0) {
                        log_warn("%s: error setting SO_BINDANY", __func__);
@@ -268,9 +268,19 @@ sock_set_bindany(int fd, int enable)
                return (-1);
        }
        return (0);
+#elif defined(IP_BINDANY)
+       frr_with_privs(&ldpd_privs) {
+               if (setsockopt(fd, IPPROTO_IP, IP_BINDANY, &enable, sizeof(int))
+                   < 0) {
+                       log_warn("%s: error setting IP_BINDANY", __func__);
+                       return (-1);
+               }
+       }
+       return (0);
 #else
-       log_warnx("%s: missing SO_BINDANY and IP_FREEBIND, unable to bind "
-           "to a nonlocal IP address", __func__);
+       log_warnx(
+               "%s: missing SO_BINDANY, IP_FREEBIND and IP_BINDANY, unable to bind to a nonlocal IP address",
+               __func__);
        return (-1);
 #endif /* HAVE_SO_BINDANY */
 }
@@ -294,7 +304,7 @@ sock_set_md5sig(int fd, int af, union ldpd_addr *addr, const char *password)
 #if HAVE_DECL_TCP_MD5SIG
        addr2sa(af, addr, 0, &su);
 
-       frr_elevate_privs(&ldpe_privs) {
+       frr_with_privs(&ldpe_privs) {
                ret = sockopt_tcp_signature(fd, &su, password);
                save_errno = errno;
        }
@@ -310,7 +320,7 @@ sock_set_md5sig(int fd, int af, union ldpd_addr *addr, const char *password)
 int
 sock_set_ipv4_tos(int fd, int tos)
 {
-       if (setsockopt(fd, IPPROTO_IP, IP_TOS, (int *)&tos, sizeof(tos)) < 0) {
+       if (setsockopt(fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) < 0) {
                log_warn("%s: error setting IP_TOS to 0x%x", __func__, tos);
                return (-1);
        }
@@ -319,7 +329,7 @@ sock_set_ipv4_tos(int fd, int tos)
 }
 
 int
-sock_set_ipv4_recvif(int fd, int enable)
+sock_set_ipv4_recvif(int fd, ifindex_t enable)
 {
        return (setsockopt_ifindex(AF_INET, fd, enable));
 }