From: Ondřej Surý Date: Wed, 5 Sep 2018 12:03:10 +0000 (+0200) Subject: Assume socklen_t is always available on all supported platforms (except on Windows... X-Git-Tag: v9.13.4~157^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2750799132cac9138fd98d06bed329b892ccf6f7;p=thirdparty%2Fbind9.git Assume socklen_t is always available on all supported platforms (except on Windows where it is typedefed to int32_t) --- diff --git a/acconfig.h b/acconfig.h index 5ab7a83f8a1..28fd2841d6d 100644 --- a/acconfig.h +++ b/acconfig.h @@ -17,9 +17,6 @@ ***/ @TOP@ -/* Define to the length type used by the socket API (socklen_t, size_t, int). */ -#undef ISC_SOCKADDR_LEN_T - /* Define if threads need PTHREAD_SCOPE_SYSTEM */ #undef NEED_PTHREAD_SCOPE_SYSTEM diff --git a/bin/tests/system/feature-test.c b/bin/tests/system/feature-test.c index f95ce4742a5..44b0558d4fe 100644 --- a/bin/tests/system/feature-test.c +++ b/bin/tests/system/feature-test.c @@ -175,7 +175,7 @@ main(int argc, char **argv) { int s; int n = -1; int v6only = -1; - ISC_SOCKADDR_LEN_T len = sizeof(v6only); + socklen_t len = sizeof(v6only); s = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); if (s >= 0) { diff --git a/config.h.in b/config.h.in index bcfd015a8cf..12c116f4926 100644 --- a/config.h.in +++ b/config.h.in @@ -17,9 +17,6 @@ *** it does not get installed. ***/ -/* Define to the length type used by the socket API (socklen_t, size_t, int). */ -#undef ISC_SOCKADDR_LEN_T - /* Define if threads need PTHREAD_SCOPE_SYSTEM */ #undef NEED_PTHREAD_SCOPE_SYSTEM diff --git a/configure b/configure index 81d41b19985..1657f57faa3 100755 --- a/configure +++ b/configure @@ -759,7 +759,6 @@ GEOIPLINKOBJS GEOIPLINKSRCS ISC_PLATFORM_NORETURN_POST ISC_PLATFORM_NORETURN_PRE -ISC_SOCKADDR_LEN_T expanded_sysconfdir PYTHON_INSTALL_LIB PYTHON_INSTALL_DIR @@ -13732,43 +13731,6 @@ fi -ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" " -#include -#include - -" -if test "x$ac_cv_type_socklen_t" = xyes; then : - $as_echo "#define ISC_SOCKADDR_LEN_T socklen_t" >>confdefs.h - -else - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int getsockname(int, struct sockaddr *, size_t *); - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - $as_echo "#define ISC_SOCKADDR_LEN_T size_t" >>confdefs.h - -else - $as_echo "#define ISC_SOCKADDR_LEN_T int" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : diff --git a/configure.in b/configure.in index 608e62a59cf..a627195e0a0 100644 --- a/configure.in +++ b/configure.in @@ -477,23 +477,6 @@ AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_TYPE_UINTPTR_T -AC_CHECK_TYPE(socklen_t, -[AC_DEFINE(ISC_SOCKADDR_LEN_T, socklen_t)], -[ -AC_TRY_COMPILE( -[ -#include -#include -int getsockname(int, struct sockaddr *, size_t *); -],[], -[AC_DEFINE(ISC_SOCKADDR_LEN_T, size_t)], -[AC_DEFINE(ISC_SOCKADDR_LEN_T, int)]) -], -[ -#include -#include -]) -AC_SUBST(ISC_SOCKADDR_LEN_T) AC_HEADER_TIME # diff --git a/lib/isc/unix/net.c b/lib/isc/unix/net.c index 5b5fb4db0e0..7d663c2df43 100644 --- a/lib/isc/unix/net.c +++ b/lib/isc/unix/net.c @@ -36,8 +36,8 @@ #include #include -#ifndef ISC_SOCKADDR_LEN_T -#define ISC_SOCKADDR_LEN_T unsigned int +#ifndef socklen_t +#define socklen_t unsigned int #endif /*% @@ -366,24 +366,24 @@ isc_net_probe_ipv6pktinfo(void) { #if ISC_CMSG_IP_TOS || defined(IPV6_TCLASS) -static inline ISC_SOCKADDR_LEN_T -cmsg_len(ISC_SOCKADDR_LEN_T len) { +static inline socklen_t +cmsg_len(socklen_t len) { #ifdef CMSG_LEN return (CMSG_LEN(len)); #else - ISC_SOCKADDR_LEN_T hdrlen; + socklen_t hdrlen; /* * Cast NULL so that any pointer arithmetic performed by CMSG_DATA * is correct. */ - hdrlen = (ISC_SOCKADDR_LEN_T)CMSG_DATA(((struct cmsghdr *)NULL)); + hdrlen = (socklen_t)CMSG_DATA(((struct cmsghdr *)NULL)); return (hdrlen + len); #endif } -static inline ISC_SOCKADDR_LEN_T -cmsg_space(ISC_SOCKADDR_LEN_T len) { +static inline socklen_t +cmsg_space(socklen_t len) { #ifdef CMSG_SPACE return (CMSG_SPACE(len)); #else @@ -448,7 +448,7 @@ static bool cmsgsend(int s, int level, int type, struct addrinfo *res) { char strbuf[ISC_STRERRORSIZE]; struct sockaddr_storage ss; - ISC_SOCKADDR_LEN_T len = sizeof(ss); + socklen_t len = sizeof(ss); struct msghdr msg; union { struct cmsghdr h; diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index d8ecdcb3cb0..f59a85e5cc2 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -207,8 +207,8 @@ typedef enum { poll_idle, poll_active, poll_checking } pollstate_t; * Some systems define the socket length argument as an int, some as size_t, * some as socklen_t. This is here so it can be easily changed if needed. */ -#ifndef ISC_SOCKADDR_LEN_T -#define ISC_SOCKADDR_LEN_T unsigned int +#ifndef socklen_t +#define socklen_t unsigned int #endif /*% @@ -1195,24 +1195,24 @@ make_nonblock(int fd) { * Note that cmsg_space() could run slow on OSes that do not have * CMSG_SPACE. */ -static inline ISC_SOCKADDR_LEN_T -cmsg_len(ISC_SOCKADDR_LEN_T len) { +static inline socklen_t +cmsg_len(socklen_t len) { #ifdef CMSG_LEN return (CMSG_LEN(len)); #else - ISC_SOCKADDR_LEN_T hdrlen; + socklen_t hdrlen; /* * Cast NULL so that any pointer arithmetic performed by CMSG_DATA * is correct. */ - hdrlen = (ISC_SOCKADDR_LEN_T)CMSG_DATA(((struct cmsghdr *)NULL)); + hdrlen = (socklen_t)CMSG_DATA(((struct cmsghdr *)NULL)); return (hdrlen + len); #endif } -static inline ISC_SOCKADDR_LEN_T -cmsg_space(ISC_SOCKADDR_LEN_T len) { +static inline socklen_t +cmsg_space(socklen_t len) { #ifdef CMSG_SPACE return (CMSG_SPACE(len)); #else @@ -2274,7 +2274,7 @@ static void set_rcvbuf(void) { int fd; int max = rcvbuf, min; - ISC_SOCKADDR_LEN_T len; + socklen_t len; fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (fd == -1) { @@ -2328,7 +2328,7 @@ static void set_sndbuf(void) { int fd; int max = sndbuf, min; - ISC_SOCKADDR_LEN_T len; + socklen_t len; fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); #if defined(ISC_PLATFORM_HAVEIPV6) @@ -2463,7 +2463,7 @@ opensocket(isc__socketmgr_t *manager, isc__socket_t *sock, int on = 1; #endif #if defined(SO_RCVBUF) || defined(SO_SNDBUF) - ISC_SOCKADDR_LEN_T optlen; + socklen_t optlen; int size = 0; #endif @@ -3412,7 +3412,7 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { isc__socketmgr_t *manager; isc_socket_newconnev_t *dev; isc_task_t *task; - ISC_SOCKADDR_LEN_T addrlen; + socklen_t addrlen; int fd; isc_result_t result = ISC_R_SUCCESS; char strbuf[ISC_STRERRORSIZE]; @@ -5812,7 +5812,7 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { isc_socket_connev_t *dev; int cc; isc_result_t result; - ISC_SOCKADDR_LEN_T optlen; + socklen_t optlen; char strbuf[ISC_STRERRORSIZE]; char peerbuf[ISC_SOCKADDR_FORMATSIZE]; @@ -5948,7 +5948,7 @@ isc__socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) { isc_result_t isc__socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) { isc__socket_t *sock = (isc__socket_t *)sock0; - ISC_SOCKADDR_LEN_T len; + socklen_t len; isc_result_t result; char strbuf[ISC_STRERRORSIZE]; @@ -6304,7 +6304,7 @@ isc_socketmgr_renderxml(isc_socketmgr_t *mgr0, xmlTextWriterPtr writer) { isc__socket_t *sock = NULL; char peerbuf[ISC_SOCKADDR_FORMATSIZE]; isc_sockaddr_t addr; - ISC_SOCKADDR_LEN_T len; + socklen_t len; int xmlrc; LOCK(&mgr->lock); @@ -6416,7 +6416,7 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr0, json_object *stats) { isc__socket_t *sock = NULL; char peerbuf[ISC_SOCKADDR_FORMATSIZE]; isc_sockaddr_t addr; - ISC_SOCKADDR_LEN_T len; + socklen_t len; json_object *obj, *array = json_object_new_array(); CHECKMEM(array); diff --git a/lib/isc/win32/include/isc/platform.h.in b/lib/isc/win32/include/isc/platform.h.in index 3ae3e3c8950..b927888f1cd 100644 --- a/lib/isc/win32/include/isc/platform.h.in +++ b/lib/isc/win32/include/isc/platform.h.in @@ -34,6 +34,10 @@ #ifndef strtoull #define strtoull _strtoui64 #endif + +#include +typedef uint32_t socklen_t; + #endif /*** diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c index b4b9e2d609f..22aa74fb86e 100644 --- a/lib/isc/win32/socket.c +++ b/lib/isc/win32/socket.c @@ -112,14 +112,6 @@ static void consistent(isc_socket_t *sock); #define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12) #endif -/* - * Some systems define the socket length argument as an int, some as size_t, - * some as socklen_t. This is here so it can be easily changed if needed. - */ -#ifndef ISC_SOCKADDR_LEN_T -#define ISC_SOCKADDR_LEN_T unsigned int -#endif - /* * Define what the possible "soft" errors can be. These are non-fatal returns * of various network related functions, like recv() and so on. @@ -1649,7 +1641,7 @@ socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, int on = 1; #endif #if defined(SO_RCVBUF) - ISC_SOCKADDR_LEN_T optlen; + socklen_t optlen; int size; #endif int socket_errno; @@ -3655,7 +3647,7 @@ isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) { isc_result_t isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) { - ISC_SOCKADDR_LEN_T len; + socklen_t len; isc_result_t result; char strbuf[ISC_STRERRORSIZE]; @@ -4007,7 +3999,7 @@ isc_socketmgr_renderxml(isc_socketmgr_t *mgr, xmlTextWriterPtr writer) isc_socket_t *sock = NULL; char peerbuf[ISC_SOCKADDR_FORMATSIZE]; isc_sockaddr_t addr; - ISC_SOCKADDR_LEN_T len; + socklen_t len; int xmlrc; LOCK(&mgr->lock); @@ -4118,7 +4110,7 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr, json_object *stats) { isc_socket_t *sock = NULL; char peerbuf[ISC_SOCKADDR_FORMATSIZE]; isc_sockaddr_t addr; - ISC_SOCKADDR_LEN_T len; + socklen_t len; json_object *obj, *array = json_object_new_array(); CHECKMEM(array);