+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [struct sockaddr_storage s;],
+ [
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for struct sockaddr_in6])
+AC_TRY_COMPILE(
+ [#include <netinet/in.h>],
+ [struct sockaddr_in6 s; s.sin6_family = 0;],
+ [
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for struct in6_addr])
+AC_TRY_COMPILE(
+ [#include <netinet/in.h>],
+ [struct in6_addr s; s.s6_addr[0] = 0;],
+ [
+ AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for struct addrinfo])
+AC_TRY_COMPILE(
+ [
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netdb.h>
+ ],
+ [struct addrinfo s; s.ai_flags = AI_PASSIVE;],
+ [
+ AC_DEFINE(HAVE_STRUCT_ADDRINFO)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+# Checks for structure members
+AC_MSG_CHECKING([whether utmp.h has ut_host field])
+AC_EGREP_HEADER(ut_host, utmp.h,
+ [AC_DEFINE(HAVE_HOST_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmpx.h has ut_host field])
+AC_EGREP_HEADER(ut_host, utmpx.h,
+ [AC_DEFINE(HAVE_HOST_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmpx.h has syslen field])
+AC_EGREP_HEADER(syslen, utmpx.h,
+ [AC_DEFINE(HAVE_SYSLEN_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_pid field])
+AC_EGREP_HEADER(ut_pid, utmp.h,
+ [AC_DEFINE(HAVE_PID_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_type field])
+AC_EGREP_HEADER(ut_type, utmp.h,
+ [AC_DEFINE(HAVE_TYPE_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_tv field])
+AC_EGREP_HEADER(ut_tv, utmp.h,
+ [AC_DEFINE(HAVE_TV_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_id field])
+AC_EGREP_HEADER(ut_id, utmp.h,
+ [AC_DEFINE(HAVE_ID_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_addr field])
+AC_EGREP_HEADER(ut_addr, utmp.h,
+ [AC_DEFINE(HAVE_ADDR_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmpx.h has ut_addr field])
+AC_EGREP_HEADER(ut_addr, utmpx.h,
+ [AC_DEFINE(HAVE_ADDR_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_addr_v6 field])
+AC_EGREP_HEADER(ut_addr_v6, utmp.h,
+ [AC_DEFINE(HAVE_ADDR_V6_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmpx.h has ut_addr_v6 field])
+AC_EGREP_HEADER(ut_addr_v6, utmpx.h,
+ [AC_DEFINE(HAVE_ADDR_V6_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([whether struct sockaddr_storage has ss_family field])
+AC_TRY_COMPILE(
+ [
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [struct sockaddr_storage s; s.ss_family = 1;],
+ [
+ AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether struct sockaddr_storage has __ss_family field])
+AC_TRY_COMPILE(
+ [
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ ],
+ [struct sockaddr_storage s; s.__ss_family = 1;],