[PATCH] Add autoconf test for struct sockaddr_storage.ss_family.

Gerald (Jerry) Carter jerry at samba.org
Mon Oct 22 18:50:22 GMT 2007


AIX 5.2 has sockaddr_storage.ss_family but AIX 5.3 has
sockaddr_storage.__ss_family.  A complete fix would test
for a __ss_family field as well and then add the #define as
necessary.
---
 source/configure.in         |   20 ++++++++++++++++++--
 source/include/includes.h   |    4 ++++
 source/include/interfaces.h |    4 ++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/source/configure.in b/source/configure.in
index a96e2d9..d9ab2c1 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -1,4 +1,4 @@
-dnl Process this file with autoconf to produce a configure script.
+>dnl Process this file with autoconf to produce a configure script.
 
 dnl We must use autotools 2.53 or above
 AC_PREREQ(2.53)
@@ -3048,7 +3048,23 @@ freeaddrinfo(ai);
 ],
 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
-    AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
+   AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
+
+   dnl Check for struct sockaddr_storage.ss_family which is 
+   dnl missing on AIX 5.3
+   AC_CACHE_CHECK([for sockaddr_storage.ss_familiy support],samba_cv_HAVE_SA_SS_FAMILY,[
+   AC_TRY_COMPILE([
+   #include <sys/socket.h>
+   #include <sys/types.h>
+   #include <netdb.h>],
+   [
+   struct sockaddr_storage sa_store;
+   sa_store.ss_family = AF_INET6;
+   ],
+   samba_cv_HAVE_SA_SS_FAMILY=yes,samba_cv_HAVE_SA_SS_FAMILY=no)])
+   if test x"$samba_cv_HAVE_SA_SS_FAMILY" = x"yes"; then
+      AC_DEFINE(HAVE_SA_SS_FAMILY,1,[Whether the system supports struct sockaddr_storage.ss_family])
+   fi
 fi
 
 ################################################
diff --git a/source/include/includes.h b/source/include/includes.h
index 0d51c3d..49e6586 100644
--- a/source/include/includes.h
+++ b/source/include/includes.h
@@ -895,6 +895,10 @@ int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
 #define MAXHOSTNAMELEN 254
 #endif
 
+#ifndef HAVE_SA_SS_FAMILY
+#define ss_family   __ss_family
+#endif
+
 /* yuck, I'd like a better way of doing this */
 #define DIRP_SIZE (256 + 32)
 
diff --git a/source/include/interfaces.h b/source/include/interfaces.h
index 66ea151..a884d25 100644
--- a/source/include/interfaces.h
+++ b/source/include/interfaces.h
@@ -5,6 +5,10 @@
 
 #define MAX_INTERFACES 128
 
+#ifndef HAVE_SA_SS_FAMILY
+#define ss_family   __ss_family
+#endif
+
 struct iface_struct {
 	char name[16];
 	int flags;
-- 
1.5.3



More information about the samba-technical mailing list