krb-ipv6.m4 revision 178826
155714Skrisdnl $Id: krb-ipv6.m4 14166 2004-08-26 12:35:42Z joda $ 255714Skrisdnl 355714Skrisdnl test for IPv6 455714Skrisdnl 555714SkrisAC_DEFUN([AC_KRB_IPV6], [ 655714SkrisAC_ARG_WITH(ipv6, 755714Skris AS_HELP_STRING([--without-ipv6],[do not enable IPv6 support]),[ 855714Skrisif test "$withval" = "no"; then 955714Skris ac_cv_lib_ipv6=no 1055714Skrisfi]) 1155714Skrissave_CFLAGS="${CFLAGS}" 1255714SkrisAC_CACHE_CHECK([for IPv6 stack type], v6type, 1355714Skris[dnl check for different v6 implementations (by itojun) 1455714Skrisv6type=unknown 1555714Skrisv6lib=none 1655714Skris 1755714Skrisfor i in v6d toshiba kame inria zeta linux; do 1855714Skris case $i in 1955714Skris v6d) 2055714Skris AC_EGREP_CPP(yes, [ 2155714Skris#include </usr/local/v6/include/sys/types.h> 2255714Skris#ifdef __V6D__ 2355714Skrisyes 2455714Skris#endif], 2555714Skris [v6type=$i; v6lib=v6; 2655714Skris v6libdir=/usr/local/v6/lib; 2755714Skris CFLAGS="-I/usr/local/v6/include $CFLAGS"]) 2855714Skris ;; 2955714Skris toshiba) 3055714Skris AC_EGREP_CPP(yes, [ 3155714Skris#include <sys/param.h> 3255714Skris#ifdef _TOSHIBA_INET6 3355714Skrisyes 3455714Skris#endif], 3555714Skris [v6type=$i; v6lib=inet6; 3655714Skris v6libdir=/usr/local/v6/lib; 3755714Skris CFLAGS="-DINET6 $CFLAGS"]) 3855714Skris ;; 3955714Skris kame) 4055714Skris AC_EGREP_CPP(yes, [ 4155714Skris#include <netinet/in.h> 4255714Skris#ifdef __KAME__ 4355714Skrisyes 4455714Skris#endif], 4555714Skris [v6type=$i; v6lib=inet6; 4655714Skris v6libdir=/usr/local/v6/lib; 4755714Skris CFLAGS="-DINET6 $CFLAGS"]) 4855714Skris ;; 4955714Skris inria) 5055714Skris AC_EGREP_CPP(yes, [ 5155714Skris#include <netinet/in.h> 5255714Skris#ifdef IPV6_INRIA_VERSION 5355714Skrisyes 5455714Skris#endif], 5555714Skris [v6type=$i; CFLAGS="-DINET6 $CFLAGS"]) 5655714Skris ;; 5755714Skris zeta) 5855714Skris AC_EGREP_CPP(yes, [ 5955714Skris#include <sys/param.h> 6055714Skris#ifdef _ZETA_MINAMI_INET6 6155714Skrisyes 62109998Smarkm#endif], 6355714Skris [v6type=$i; v6lib=inet6; 6455714Skris v6libdir=/usr/local/v6/lib; 6555714Skris CFLAGS="-DINET6 $CFLAGS"]) 6655714Skris ;; 6755714Skris linux) 6855714Skris if test -d /usr/inet6; then 6955714Skris v6type=$i 7055714Skris v6lib=inet6 7155714Skris v6libdir=/usr/inet6 7255714Skris CFLAGS="-DINET6 $CFLAGS" 7355714Skris fi 7455714Skris ;; 7555714Skris esac 7655714Skris if test "$v6type" != "unknown"; then 7755714Skris break 7855714Skris fi 7955714Skrisdone 8055714Skris 8155714Skrisif test "$v6lib" != "none"; then 8255714Skris for dir in $v6libdir /usr/local/v6/lib /usr/local/lib; do 8355714Skris if test -d $dir -a -f $dir/lib$v6lib.a; then 8455714Skris LIBS="-L$dir -l$v6lib $LIBS" 85109998Smarkm break 8655714Skris fi 8755714Skris done 8855714Skrisfi 8955714Skris]) 9055714Skris 9155714SkrisAC_CACHE_CHECK([for IPv6], ac_cv_lib_ipv6, [ 9255714SkrisAC_LINK_IFELSE([AC_LANG_PROGRAM([[ 9355714Skris#ifdef HAVE_SYS_TYPES_H 9455714Skris#include <sys/types.h> 9555714Skris#endif 9655714Skris#ifdef HAVE_SYS_SOCKET_H 9755714Skris#include <sys/socket.h> 9855714Skris#endif 9955714Skris#ifdef HAVE_NETINET_IN_H 10055714Skris#include <netinet/in.h> 10155714Skris#endif 10255714Skris#ifdef HAVE_NETINET_IN6_H 10355714Skris#include <netinet/in6.h> 10455714Skris#endif 10555714Skris]], 10655714Skris[[ 10755714Skris struct sockaddr_in6 sin6; 10855714Skris int s; 10955714Skris 11055714Skris s = socket(AF_INET6, SOCK_DGRAM, 0); 11155714Skris 11255714Skris sin6.sin6_family = AF_INET6; 11355714Skris sin6.sin6_port = htons(17); 11455714Skris sin6.sin6_addr = in6addr_any; 11555714Skris bind(s, (struct sockaddr *)&sin6, sizeof(sin6)); 11655714Skris]])], 11755714Skris[ac_cv_lib_ipv6=yes], 11855714Skris[ac_cv_lib_ipv6=no])]) 11955714Skrisif test "$ac_cv_lib_ipv6" = yes; then 12055714Skris AC_DEFINE(HAVE_IPV6, 1, [Define if you have IPv6.]) 12155714Skriselse 12255714Skris CFLAGS="${save_CFLAGS}" 12355714Skrisfi 12455714Skris 12555714Skris## test for AIX missing in6addr_loopback 12655714Skrisif test "$ac_cv_lib_ipv6" = yes; then 12755714Skris AC_CACHE_CHECK([for in6addr_loopback],[ac_cv_var_in6addr_loopback],[ 12855714Skris AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 12955714Skris#ifdef HAVE_SYS_TYPES_H 13055714Skris#include <sys/types.h> 13155714Skris#endif 13255714Skris#ifdef HAVE_SYS_SOCKET_H 13355714Skris#include <sys/socket.h> 13455714Skris#endif 13555714Skris#ifdef HAVE_NETINET_IN_H 13655714Skris#include <netinet/in.h> 13755714Skris#endif 13855714Skris#ifdef HAVE_NETINET_IN6_H 13955714Skris#include <netinet/in6.h> 14055714Skris#endif]],[[ 14155714Skrisstruct sockaddr_in6 sin6; 14255714Skrissin6.sin6_addr = in6addr_loopback; 14355714Skris]])],[ac_cv_var_in6addr_loopback=yes],[ac_cv_var_in6addr_loopback=no])]) 14455714Skris if test "$ac_cv_var_in6addr_loopback" = yes; then 14555714Skris AC_DEFINE(HAVE_IN6ADDR_LOOPBACK, 1, 14655714Skris [Define if you have the in6addr_loopback variable]) 14755714Skris fi 14855714Skrisfi 14955714Skris])