diff options
| author | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2018-12-21 12:27:44 -0200 | 
|---|---|---|
| committer | Martin Winter <mwinter@opensourcerouting.org> | 2019-05-03 11:02:46 -0700 | 
| commit | 16927ecd7537faac212b5de40362e36cc15379e6 (patch) | |
| tree | 944f533be169e99a3f8c53315628a9a2994fdda5 | |
| parent | ea082e63ffb6dd3ec9becd69a2703a688742a41d (diff) | |
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 <rzalamena@opensourcerouting.org>
| -rw-r--r-- | ldpd/socket.c | 13 | 
1 files changed, 11 insertions, 2 deletions
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 */  }  | 
