From: W.C.A. Wijngaards Date: Wed, 9 Dec 2020 10:41:07 +0000 (+0100) Subject: configure test for struct sockaddr_in6 sin6_len member X-Git-Tag: release-1.13.2rc1~254^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7167153db599d9053b6684e9726b4a2e5c25c413;p=thirdparty%2Funbound.git configure test for struct sockaddr_in6 sin6_len member --- diff --git a/config.h.in b/config.h.in index f993b81b0..98b5f067b 100644 --- a/config.h.in +++ b/config.h.in @@ -571,6 +571,9 @@ /* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */ #undef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST +/* Define to 1 if `sin6_len' is a member of `struct sockaddr_in6'. */ +#undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN + /* Define to 1 if `sun_len' is a member of `struct sockaddr_un'. */ #undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN diff --git a/configure b/configure index 00d36a361..c053ab920 100755 --- a/configure +++ b/configure @@ -20149,6 +20149,50 @@ $as_echo "no" >&6; } fi +fi + +ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_len" "ac_cv_member_struct_sockaddr_in6_sin6_len" " +$ac_includes_default +#if HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#ifdef HAVE_SYS_UIO_H +#include +#endif + +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_WINSOCK2_H +#include +#endif + +#ifdef HAVE_WS2TCPIP_H +#include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_in6_sin6_len" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 1 +_ACEOF + + fi ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_len" "ac_cv_member_struct_sockaddr_un_sun_len" " diff --git a/configure.ac b/configure.ac index d648f55ad..fa5536687 100644 --- a/configure.ac +++ b/configure.ac @@ -1533,6 +1533,40 @@ if test $ac_cv_func_daemon = yes; then ]) fi +AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_len],,,[ +AC_INCLUDES_DEFAULT +#if HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#ifdef HAVE_SYS_UIO_H +#include +#endif + +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_WINSOCK2_H +#include +#endif + +#ifdef HAVE_WS2TCPIP_H +#include +#endif +]) AC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,,[ AC_INCLUDES_DEFAULT #ifdef HAVE_SYS_UN_H diff --git a/util/net_help.c b/util/net_help.c index 8732ea3df..9a94556d4 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1632,7 +1632,9 @@ mk_local_addr(void* addr, u_short port, u_char family) struct in6_addr* v6addr = (struct in6_addr*)addr; struct sockaddr_in6 sin6; memset(&sin6, 0, sizeof(sin6)); - /* sin6.sin6_len = sizeof(sin6); */ +#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN + sin6.sin6_len = sizeof(sin6); +#endif sin6.sin6_family = AF_INET6; sin6.sin6_addr = *v6addr; sin6.sin6_port = port;