;;
esac
+AC_CHECK_FUNCS([getifaddrs])
+
AC_ARG_WITH([adns],
AS_HELP_STRING([--with-adns],
[use ADNS library for background name resolution]),
#include <netinet/icmp6.h>
#include <netinet/udp.h>
-#include <net/if.h>
-#include <ifaddrs.h>
-#include <sys/ioctl.h>
+#ifdef HAVE_GETIFADDRS
+# include <net/if.h>
+# include <ifaddrs.h>
+# include <sys/ioctl.h>
+#endif
#include <mLib/alloc.h>
#include <mLib/bits.h>
/*----- Doing it the hard way ---------------------------------------------*/
+#ifdef HAVE_GETIFADDRS
+
#if defined(linux) || defined(__OpenBSD__)
# define IPHDR_SANE
#endif
#undef OPS_CHAIN
#define OPS_CHAIN &raw_ops
+#endif
+
/*----- Doing the job on Linux --------------------------------------------*/
#if defined(linux)
#define f_bogus 1u
+#ifdef HAVE_GETIFADDRS
if ((rawicmp = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP)) < 0 ||
(rawudp = socket(PF_INET, SOCK_RAW, IPPROTO_UDP)) < 0)
rawerr = errno;
if ((rawicmp6 = socket(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0 ||
(rawudp6 = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW)) < 0)
rawerr6 = errno;
+#endif
if (setuid(getuid()))
abort();