]> git.proxmox.com Git - mirror_frr.git/commitdiff
ldpd: add support for FreeBSD IP_BINDANY
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Fri, 21 Dec 2018 14:27:44 +0000 (12:27 -0200)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Fri, 21 Dec 2018 21:33:48 +0000 (19:33 -0200)
Add yet another way to setsockopt a socket to listen to a foreign
address.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
ldpd/socket.c

index bebd7a7d6145d3e93db3a0ebe3cca71480de1bb8..78a07b1ed4b37205748e50a5f794649f2acf8a10 100644 (file)
@@ -268,9 +268,18 @@ sock_set_bindany(int fd, int enable)
                return (-1);
        }
        return (0);
+#elif defined(IP_BINDANY)
+       frr_elevate_privs(&ldpd_privs) {
+               if (setsockopt(fd, IPPROTO_IP, IP_BINDANY, &enable, sizeof(int))
+                   < 0) {
+                       log_warn("%s: error setting IP_BINDANY", __func__);
+                       return (-1);
+               }
+       }
 #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 */
 }