]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Handle ss_len and socklen type for sntp
authorHarlan Stenn <stenn@ntp.org>
Thu, 20 Nov 2008 07:07:09 +0000 (07:07 +0000)
committerHarlan Stenn <stenn@ntp.org>
Thu, 20 Nov 2008 07:07:09 +0000 (07:07 +0000)
bk: 49250c9dwKFVG-xZjta9gd2m094jIQ

ChangeLog
gsoc_sntp/configure.ac

index 35562095524bf5abb47cee4a22e6a457392b8790..a47b2fda8efd4137a447f3bd9f81a48d020d2e6a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* Handle ss_len and socklen type for sntp.
 * Fixes to the sntp configure.ac script.
 * Provide INET6_ADDRSTRLEN if it is missing.
 * [Bug 1095] overflow in caljulian.c.
index b3e0fc8c8bee5cb6e25a6b10be88caacbfaf8f4b..46ebf4ba953e7c4f5683f76ce08acc0cf76b1958 100644 (file)
@@ -85,6 +85,32 @@ case "$ac_cv_c_char_unsigned$ac_cv_sizeof_signed_char$ac_cv_type_s_char" in
 esac
 AC_TYPE_UID_T
 
+AC_MSG_CHECKING([type of socklen arg for getsockname()])
+AC_CACHE_VAL(ac_cv_func_getsockname_arg2,dnl
+[AC_CACHE_VAL(ac_cv_func_getsockname_socklen_type,dnl
+ [for ac_cv_func_getsockname_arg2 in 'struct sockaddr *' 'void *'; do
+  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, $ac_cv_func_getsockname_arg2, $ac_cv_func_getsockname_socklen_type *);],,dnl
+    [ac_not_found=no ; break 2], ac_not_found=yes)
+   done
+  done
+ ])dnl AC_CACHE_VAL
+])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_CACHE_CHECK(for struct sockaddr_storage, ac_cv_struct_sockaddr_storage,
 [AC_TRY_COMPILE([
 #include <sys/types.h>
@@ -99,6 +125,54 @@ if test $ac_cv_struct_sockaddr_storage = yes; then
     AC_DEFINE([HAVE_STRUCT_SOCKADDR_STORAGE], 1, [Does a system header define struct sockaddr_storage?])
 fi
 
+AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
+               ac_cv_have_ss_family_in_struct_ss, [
+       AC_TRY_COMPILE(
+               [
+#include <sys/types.h>
+#include <sys/socket.h>
+               ],
+               [ struct sockaddr_storage s; s.ss_family = 1; ],
+               [ ac_cv_have_ss_family_in_struct_ss="yes" ],
+               [ ac_cv_have_ss_family_in_struct_ss="no" ],
+       )
+])
+if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
+       AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have ss_family?])
+else
+    # Hack around a problem...
+    # HMS: This is $host because we need the -D if we are building *for* it.
+    # HMS: 061029: Now that we separate the ss_* checks this is causing
+    # a problem - disable it until we get to the bottom of it.
+    case "$host" in
+     XXX*-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
+       ;;
+    esac
+fi
+
+AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
+               ac_cv_have___ss_family_in_struct_ss, [
+       AC_TRY_COMPILE(
+               [
+#include <sys/types.h>
+#include <sys/socket.h>
+               ],
+               [ struct sockaddr_storage s; s.__ss_family = 1; ],
+               [ ac_cv_have___ss_family_in_struct_ss="yes" ],
+               [ ac_cv_have___ss_family_in_struct_ss="no" ]
+       )
+])
+if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
+       AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have __ss_family?])
+fi
+
+AH_VERBATIM([X_HAVE_SS_FAMILY_IN_SS],
+[/* Handle ss_family */
+#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
+# define ss_family __ss_family
+#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */])
+
+
 AC_ARG_ENABLE([ipv6], [AC_HELP_STRING([--enable-ipv6], [s use IPv6?])])
 
 case "$enable_ipv6" in