]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Ignore ENOPROTOOPT on SO_REUSEPORT for RedHat
authorFrancis Dupont <fdupont@isc.org>
Thu, 22 Jun 2017 14:25:34 +0000 (16:25 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 22 Jun 2017 14:25:34 +0000 (16:25 +0200)
common/socket.c
configure.ac-base

index e8851b4cfa05424c6c0a4c8a69d6c47371c1657d..779fc02ef951b05c6d66b8669e1e66a990f97f0b 100644 (file)
@@ -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");
                }
index 284011e670fcce29531ea39c4e581560f4d9a29f..a189247a494339203094339146280e574b6091fd 100644 (file)
@@ -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,