summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-12-20 15:59:39 +0100
committerStefan Metzmacher <metze@samba.org>2007-12-21 06:28:49 +0100
commit6afef7d624fbf734d93ebfe95689a282b202aa3c (patch)
treef1b39842e96df57a624b355077c4fcdca8b64d9c
parent1ae762d3bc924245aa96378929a9a048d385a61e (diff)
downloadsamba-6afef7d624fbf734d93ebfe95689a282b202aa3c.tar.gz
samba-6afef7d624fbf734d93ebfe95689a282b202aa3c.tar.bz2
samba-6afef7d624fbf734d93ebfe95689a282b202aa3c.zip
r26550: libreplace: fallback to __ss_family of struct sockaddr_storage
metze (This used to be commit 11bdc9bed80b9842ac1ab8f22509a5d191cddc91)
-rw-r--r--source4/lib/replace/libreplace.m420
-rw-r--r--source4/lib/replace/system/network.h9
2 files changed, 29 insertions, 0 deletions
diff --git a/source4/lib/replace/libreplace.m4 b/source4/lib/replace/libreplace.m4
index 7e456b4d03..a577285639 100644
--- a/source4/lib/replace/libreplace.m4
+++ b/source4/lib/replace/libreplace.m4
@@ -152,6 +152,26 @@ AC_HAVE_TYPE([struct sockaddr_in6], [
#include <netinet/in.h>
])
+if test x"$ac_cv_type_struct_sockaddr_storage" = x"yes"; then
+AC_CHECK_MEMBER(struct sockaddr_storage.ss_family,
+ AC_DEFINE(HAVE_SS_FAMILY, 1, [Defined if struct sockaddr_storage has ss_family field]),,
+ [
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+ ])
+
+if test x"$ac_cv_member_struct_sockaddr_storage_ss_family" != x"yes"; then
+AC_CHECK_MEMBER(struct sockaddr_storage.__ss_family,
+ AC_DEFINE(HAVE___SS_FAMILY, 1, [Defined if struct sockaddr_storage has __ss_family field]),,
+ [
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+ ])
+fi
+fi
+
AC_CHECK_FUNCS(seteuid setresuid setegid setresgid chroot bzero strerror)
AC_CHECK_FUNCS(vsyslog setlinebuf mktime ftruncate chsize rename)
AC_CHECK_FUNCS(waitpid strlcpy strlcat initgroups memmove strdup)
diff --git a/source4/lib/replace/system/network.h b/source4/lib/replace/system/network.h
index f72b233712..e2fad5f686 100644
--- a/source4/lib/replace/system/network.h
+++ b/source4/lib/replace/system/network.h
@@ -249,9 +249,18 @@ typedef unsigned short int sa_family_t;
#ifdef HAVE_STRUCT_SOCKADDR_IN6
#define sockaddr_storage sockaddr_in6
#define ss_family sin6_family
+#define HAVE_SS_FAMILY 1
#else
#define sockaddr_storage sockaddr_in
#define ss_family sin_family
+#define HAVE_SS_FAMILY 1
+#endif
+#endif
+
+#ifndef HAVE_SS_FAMILY
+#ifdef HAVE___SS_FAMILY
+#define ss_family __ss_family
+#define HAVE_SS_FAMILY 1
#endif
#endif