]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1527] Disable perfdhcp if getifaddrs() is not available
authorStephen Morris <stephen@isc.org>
Fri, 23 Dec 2011 16:17:42 +0000 (16:17 +0000)
committerStephen Morris <stephen@isc.org>
Fri, 23 Dec 2011 16:17:42 +0000 (16:17 +0000)
This is a fairly complex function so instead of writing a replacement
for it, compile a short program that outputs a message saying that
perfdhcp is not supported on that operating system.

configure.ac
tests/tools/Makefile.am
tests/tools/perfdhcp/perfdhcp.c

index 3ab7bebf0d7ca4305f1bbdefa5d65b08b4803d9a..81ead0c5a9a93d0f56fbfd7325ca2cfc189da6ae 100644 (file)
@@ -861,10 +861,20 @@ EV_SET(NULL, 0, 0, 0, 0, 0, udata);],
        ])
 fi
 
+# perfdhcp: If the clock_gettime() function does not exist on the system,
+# use an alternative supplied in the code based on gettimeofday().
 CLOCK_GETTIME_LDFLAGS=
 AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_GETTIME_LDFLAGS=-lrt], [])
 AC_SUBST([CLOCK_GETTIME_LDFLAGS])
 
+# perfdhcp: if getifaddrs() does not exist, have the code output a message
+# that it can't be run on this version of the operating system.  For the
+# systems on which BIND 10 is built, this means Solaris 10. (Replacements
+# for this function are long and involved, and the function is reported present
+# on Solaris 11 and later, either in the libsocket or libnsl libraries.)
+AC_SEARCH_LIBS([getifaddrs], [socket nsl],
+               [AC_DEFINE([HAVE_GETIFADDRS], [1], [getifaddrs() present])])
+
 # /dev/poll issue: ASIO uses /dev/poll by default if it's available (generally
 # the case with Solaris).  Unfortunately its /dev/poll specific code would
 # trigger the gcc's "missing-field-initializers" warning, which would
@@ -1031,6 +1041,7 @@ AC_CONFIG_FILES([Makefile
                  tests/tools/Makefile
                  tests/tools/badpacket/Makefile
                  tests/tools/badpacket/tests/Makefile
+                 tests/tools/perfdhcp/Makefile
                ])
 AC_OUTPUT([doc/version.ent
            compatcheck/sqlite3-difftbl-check.py
index 56cade32fe85b4c7004e18b3d18f360204219727..b4c139424e6a83eeee407429113b32bbace07b17 100644 (file)
@@ -2,4 +2,4 @@
 # portable (at least not exist on our Solaris buildbot).  For a short term
 # workaround we stop building it until it's resolved.
 #SUBDIRS = badpacket perfdhcp
-SUBDIRS = badpacket
+SUBDIRS = badpacket perfdhcp
index b987a3b8b0faccc64d760d60375098e7341c7aee..6e02b7e8697dc18c0b817066af5ffb1abbd041b1 100644 (file)
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
+#include <config.h>
+
+#ifndef HAVE_GETIFADDRS
+
+/*
+ * Solaris 10 does not have the getifaddrs() function available (although it
+ * is present on Solaris 11 and later).  For the present we will not implement
+ * a replacement (as we do with clock_gettime) as the implementation is
+ * relatively complex.  Just output a message saying that the utility is not
+ * supported on this operating system.
+ */
+
+#include <stdio.h>
+
+int
+main(const int argc, char* const argv[])
+{
+    fprintf(stderr, "perfdhcp is not supported on this version of the operating system\n");
+    return (1);
+}
+
+#else
+
+/* getifaddrs() present, so the code should compile */
+
 #ifdef __linux__
 #define _GNU_SOURCE
 #endif
@@ -3494,3 +3519,5 @@ main(const int argc, char * const argv[])
        else
                exit(3);
 }
+
+#endif  /* HAVE_GETIFADDRS */