From b9b10be3ea0e7ffe660747f35f11dc6b896883fc Mon Sep 17 00:00:00 2001
From: Victorien Le Couviour--Tuffet <victorien.lecouviour.tuffet@gmail.com>
Date: Tue, 11 Sep 2018 17:38:25 +0200
Subject: [PATCH 1/2] build: fix getifaddrs detection
Before this was determined by the presence of a struct member, but for
android target, the NDK will provide the struct but not necessarily the
related functions.
compat/compat.h | 2 +-
configure.ac | 7 ++-----
src/mdns.c | 6 +++---
3 files changed, 6 insertions(+), 9 deletions(-)
@@ -99,7 +99,7 @@ typedef DWORD multicast_if;
#else
-# if HAVE_IFADDRS
+# if HAVE_IFADDRS_H
#include <ifaddrs.h>
typedef struct sockaddr_storage multicast_if;
# else
@@ -257,11 +257,8 @@ AC_CHECK_TYPES([struct pollfd],,,
#endif
])
-
-AC_CHECK_MEMBER([struct ifaddrs.ifa_addr],[
- AC_DEFINE([HAVE_IFADDRS],[1],[Define to 1 if you have ifaddrs.ifa_addr function])],
- [],[[#include <ifaddrs.h>]])
-
+AC_CHECK_FUNCS([getifaddrs])
+AC_CHECK_HEADERS([ifaddrs.h])
AC_SUBST([LIBSOCKET])
@@ -73,7 +73,7 @@ extern void rr_print(const struct rr_entry *);
extern void rr_free(struct rr_entry *);
#ifndef _WIN32
-#if HAVE_IFADDRS
+#if HAVE_GETIFADDRS
static bool
mdns_is_interface_valuable(struct ifaddrs* ifa)
@@ -139,7 +139,7 @@ mdns_list_interfaces(multicast_if** pp_intfs, size_t* p_nb_intf, int ai_family)
*p_nb_intf = 1;
return (0);
}
-#endif // HAVE_IFADDRS
+#endif // HAVE_GETIFADDRS
#else // _WIN32
@@ -332,7 +332,7 @@ mdns_init(struct mdns_ctx **p_ctx, const char *addr, unsigned short port)
return mdns_destroy(ctx), (MDNS_NETERR);
}
-#if defined(HAVE_IFADDRS) || defined(_WIN32)
+#if defined(HAVE_GETIFADDRS) || defined(_WIN32)
if (setsockopt(ctx->conns[i].sock,
ctx->conns[i].family == AF_INET ? IPPROTO_IP : IPPROTO_IPV6,
ctx->conns[i].family == AF_INET ? IP_MULTICAST_IF : IPV6_MULTICAST_IF,
--
2.19.1