samba-technical@lists.samba.org
[Top] [All Lists]

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

Subject: Re: [PATCH] Add autoconf test for struct sockaddr_storage.ss_family.
From: "Gerald (Jerry) Carter"
Date: Mon, 22 Oct 2007 14:22:29 -0500
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ignore this one.  Ends up causing problems on OS X.
Sorry.  Should have waited for a complete build before
sending it.




jerry


Gerald (Jerry) Carter wrote:
> 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;


- --
=====================================================================
Samba                                    ------- http://www.samba.org
Centeris                         -----------  http://www.centeris.com
"What man is a man who does not make the world better?"      --Balian
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHHPh1IR7qMdg1EfYRAq+tAJ9ZZebxuUcRbtf+60I0p3EHls19NACfTa19
4M0JgIsw+DLDGxdg6EWb7+A=
=vTjm
-----END PGP SIGNATURE-----

<Prev in Thread] Current Thread [Next in Thread>