pespin submitted this change.
Detect struct in6_addr.s6_addr32 via AC_CHECK_MEMBER and use HAVE_IN6_ADDR_S6_ADDR32 instead of __linux__.
No functional changes intended, this is a preparatory refactor to keep
follow-up patches focused and easier to review.
Change-Id: I29385fde0f1e6c6cc73cd1488befdef9040cc28e
---
M configure.ac
M src/core/socket.c
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 64690f9..4a6a474 100644
--- a/configure.ac
+++ b/configure.ac
@@ -86,6 +86,13 @@
AC_CHECK_LIB(execinfo, backtrace, BACKTRACE_LIB=-lexecinfo, BACKTRACE_LIB=)
AC_SUBST(BACKTRACE_LIB)
+# check for struct in6_addr has s6_addr32 field
+AC_CHECK_MEMBER([struct in6_addr.s6_addr32],
+ [AC_DEFINE([HAVE_IN6_ADDR_S6_ADDR32], [1],
+ [Define if struct in6_addr has s6_addr32 field])],
+ [],
+ [[#include <netinet/in.h>]])
+
# check for pthread (PTHREAD_CFLAGS, PTHREAD_LIBS)
AX_PTHREAD
diff --git a/src/core/socket.c b/src/core/socket.c
index bb32185..2de4bb3 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1695,7 +1695,7 @@
static unsigned int in6_addr_netmask_to_prefixlen(const struct in6_addr *netmask)
{
- #if defined(__linux__)
+ #if (HAVE_IN6_ADDR_S6_ADDR32)
#define ADDRFIELD(i) s6_addr32[i]
#else
#define ADDRFIELD(i) __u6_addr.__u6_addr32[i]
To view, visit change 41887. To unsubscribe, or for help writing mail filters, visit settings.