Commit bf0b1863 authored by Francis Dupont's avatar Francis Dupont
Browse files

Ignore ENOPROTOOPT on SO_REUSEPORT for RedHat

parent 3f2eb206
......@@ -219,11 +219,14 @@ if_register_socket(struct interface_info *info, int family,
* respective interfaces. This does not (and should not) affect
* DHCPv4 sockets; we can't yet support BSD sockets well, much
* less multiple sockets. Make sense only with multicast.
* RedHat defines SO_REUSEPORT with a kernel which does not support
* it and returns ENOPROTOOPT so in this case ignore the error.
*/
if ((local_family == AF_INET6) && *do_multicast) {
flag = 1;
if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT,
(char *)&flag, sizeof(flag)) < 0) {
if ((setsockopt(sock, SOL_SOCKET, SO_REUSEPORT,
(char *)&flag, sizeof(flag)) < 0) &&
(errno != ENOPROTOOPT)) {
log_fatal("Can't set SO_REUSEPORT option on dhcp "
"socket: %m");
}
......
......@@ -626,6 +626,16 @@ AC_CHECK_FUNCS(strlcat)
# For HP/UX we need -lipv6 for if_nametoindex, perhaps others.
AC_SEARCH_LIBS(if_nametoindex, [ipv6])
# For some Solaris nanosleep is found by BIND in librt
have_nanosleep="no"
AC_CHECK_FUNC(nanosleep, have_nanosleep="yes")
if test "$have_nanosleep" = "no"; then
AC_CHECK_LIB(rt, nanosleep, have_nanosleep="rt")
fi
if test "$have_nanosleep" = "rt"; then
LIBS="-lrt $LIBS"
fi
# check for /dev/random (declares HAVE_DEV_RANDOM)
AC_MSG_CHECKING(for random device)
AC_ARG_WITH(randomdev,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment