#
# Look for in_port_t.
#
-AC_MSG_CHECKING(for type in_port_t)
+AC_MSG_CHECKING(for in_port_t)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netinet/in.h>],
;;
esac
+AC_MSG_CHECKING([type of socklen arg for getsockname()])
+AC_CACHE_VAL(ac_cv_func_getsockname_socklen_type,dnl
+[for ac_cv_func_getsockname_socklen_type in 'socklen_t' 'size_t' 'unsigned int' 'int'; do
+ AC_TRY_COMPILE(dnl
+[#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+extern getsockname (int, struct sockaddr *, $ac_cv_func_getsockname_socklen_type *);],,dnl
+ [ac_not_found=no ; break], ac_not_found=yes)
+ done
+])dnl AC_CACHE_VAL
+if test "$ac_not_found" = yes; then
+ ac_cv_func_getsockname_socklen_type='socklen_t'
+fi
+AC_MSG_RESULT([$ac_cv_func_getsockname_socklen_type])
+AC_DEFINE_UNQUOTED([GETSOCKNAME_SOCKLEN_TYPE],
+ $ac_cv_func_getsockname_socklen_type,
+ [What is getsockname()'s socklen type?])
+
AC_CHECK_FUNCS(getrusage)
AC_CHECK_FUNC(gettimeofday, ,[
case "$host" in
#ifdef ISC_PLATFORM_HAVEIN6PKTINFO
if (domain == PF_INET6) {
struct sockaddr_in6 sin6;
- unsigned int len;
+ GETSOCKNAME_SOCKLEN_TYPE len;
/*
* Check to see if IPv6 is broken, as is common on Linux.
*/
len = sizeof(sin6);
- if (getsockname(s, (struct sockaddr *)&sin6, (void *)&len) < 0)
+ if (getsockname(s, (struct sockaddr *)&sin6, &len) < 0)
{
result = ISC_R_NOTFOUND;
} else {
int rtn;
struct interface *interface;
struct sockaddr_storage saddr;
- socklen_t saddrlen = SOCKLEN(addr);
+ GETSOCKNAME_SOCKLEN_TYPE saddrlen = SOCKLEN(addr);
DPRINTF(4, ("Finding interface for addr %s in list of addresses\n",
stoa(addr));)