[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