From: Rafael Zalamena Date: Fri, 21 Dec 2018 14:27:44 +0000 (-0200) Subject: ldpd: add support for FreeBSD IP_BINDANY X-Git-Tag: frr-6.0.3~1^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=16927ecd7537faac212b5de40362e36cc15379e6;p=matthieu%2Ffrr.git ldpd: add support for FreeBSD IP_BINDANY Add yet another way to setsockopt a socket to listen to a foreign address. Signed-off-by: Rafael Zalamena --- diff --git a/ldpd/socket.c b/ldpd/socket.c index bebd7a7d61..78a07b1ed4 100644 --- a/ldpd/socket.c +++ b/ldpd/socket.c @@ -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 */ }