1178825Sdfrdnl $Id: krb-ipv6.m4 14166 2004-08-26 12:35:42Z joda $ 255682Smarkmdnl 355682Smarkmdnl test for IPv6 455682Smarkmdnl 5127808SnectarAC_DEFUN([AC_KRB_IPV6], [ 655682SmarkmAC_ARG_WITH(ipv6, 7178825Sdfr AS_HELP_STRING([--without-ipv6],[do not enable IPv6 support]),[ 855682Smarkmif test "$withval" = "no"; then 955682Smarkm ac_cv_lib_ipv6=no 1055682Smarkmfi]) 1178527Sassarsave_CFLAGS="${CFLAGS}" 12102644SnectarAC_CACHE_CHECK([for IPv6 stack type], v6type, 1355682Smarkm[dnl check for different v6 implementations (by itojun) 1455682Smarkmv6type=unknown 1555682Smarkmv6lib=none 1655682Smarkm 1755682Smarkmfor i in v6d toshiba kame inria zeta linux; do 1855682Smarkm case $i in 1955682Smarkm v6d) 2072445Sassar AC_EGREP_CPP(yes, [ 2155682Smarkm#include </usr/local/v6/include/sys/types.h> 2255682Smarkm#ifdef __V6D__ 2355682Smarkmyes 2455682Smarkm#endif], 2555682Smarkm [v6type=$i; v6lib=v6; 2655682Smarkm v6libdir=/usr/local/v6/lib; 2755682Smarkm CFLAGS="-I/usr/local/v6/include $CFLAGS"]) 2855682Smarkm ;; 2955682Smarkm toshiba) 3072445Sassar AC_EGREP_CPP(yes, [ 3155682Smarkm#include <sys/param.h> 3255682Smarkm#ifdef _TOSHIBA_INET6 3355682Smarkmyes 3455682Smarkm#endif], 3555682Smarkm [v6type=$i; v6lib=inet6; 3655682Smarkm v6libdir=/usr/local/v6/lib; 3755682Smarkm CFLAGS="-DINET6 $CFLAGS"]) 3855682Smarkm ;; 3955682Smarkm kame) 4072445Sassar AC_EGREP_CPP(yes, [ 4155682Smarkm#include <netinet/in.h> 4255682Smarkm#ifdef __KAME__ 4355682Smarkmyes 4455682Smarkm#endif], 4555682Smarkm [v6type=$i; v6lib=inet6; 4655682Smarkm v6libdir=/usr/local/v6/lib; 4755682Smarkm CFLAGS="-DINET6 $CFLAGS"]) 4855682Smarkm ;; 4955682Smarkm inria) 5072445Sassar AC_EGREP_CPP(yes, [ 5155682Smarkm#include <netinet/in.h> 5255682Smarkm#ifdef IPV6_INRIA_VERSION 5355682Smarkmyes 5455682Smarkm#endif], 5555682Smarkm [v6type=$i; CFLAGS="-DINET6 $CFLAGS"]) 5655682Smarkm ;; 5755682Smarkm zeta) 5872445Sassar AC_EGREP_CPP(yes, [ 5955682Smarkm#include <sys/param.h> 6055682Smarkm#ifdef _ZETA_MINAMI_INET6 6155682Smarkmyes 6255682Smarkm#endif], 6355682Smarkm [v6type=$i; v6lib=inet6; 6455682Smarkm v6libdir=/usr/local/v6/lib; 6555682Smarkm CFLAGS="-DINET6 $CFLAGS"]) 6655682Smarkm ;; 6755682Smarkm linux) 6855682Smarkm if test -d /usr/inet6; then 6955682Smarkm v6type=$i 7055682Smarkm v6lib=inet6 7155682Smarkm v6libdir=/usr/inet6 7255682Smarkm CFLAGS="-DINET6 $CFLAGS" 7355682Smarkm fi 7455682Smarkm ;; 7555682Smarkm esac 7655682Smarkm if test "$v6type" != "unknown"; then 7755682Smarkm break 7855682Smarkm fi 7955682Smarkmdone 8055682Smarkm 8155682Smarkmif test "$v6lib" != "none"; then 8255682Smarkm for dir in $v6libdir /usr/local/v6/lib /usr/local/lib; do 8355682Smarkm if test -d $dir -a -f $dir/lib$v6lib.a; then 8455682Smarkm LIBS="-L$dir -l$v6lib $LIBS" 8555682Smarkm break 8655682Smarkm fi 8755682Smarkm done 8855682Smarkmfi 89102644Snectar]) 90102644Snectar 91102644SnectarAC_CACHE_CHECK([for IPv6], ac_cv_lib_ipv6, [ 92178825SdfrAC_LINK_IFELSE([AC_LANG_PROGRAM([[ 9355682Smarkm#ifdef HAVE_SYS_TYPES_H 9455682Smarkm#include <sys/types.h> 9555682Smarkm#endif 9655682Smarkm#ifdef HAVE_SYS_SOCKET_H 9755682Smarkm#include <sys/socket.h> 9855682Smarkm#endif 9955682Smarkm#ifdef HAVE_NETINET_IN_H 10055682Smarkm#include <netinet/in.h> 10155682Smarkm#endif 10255682Smarkm#ifdef HAVE_NETINET_IN6_H 10355682Smarkm#include <netinet/in6.h> 10455682Smarkm#endif 105178825Sdfr]], 106178825Sdfr[[ 10755682Smarkm struct sockaddr_in6 sin6; 10855682Smarkm int s; 10955682Smarkm 11055682Smarkm s = socket(AF_INET6, SOCK_DGRAM, 0); 11155682Smarkm 11255682Smarkm sin6.sin6_family = AF_INET6; 11355682Smarkm sin6.sin6_port = htons(17); 11455682Smarkm sin6.sin6_addr = in6addr_any; 11555682Smarkm bind(s, (struct sockaddr *)&sin6, sizeof(sin6)); 116178825Sdfr]])], 117178825Sdfr[ac_cv_lib_ipv6=yes], 118178825Sdfr[ac_cv_lib_ipv6=no])]) 11955682Smarkmif test "$ac_cv_lib_ipv6" = yes; then 12055682Smarkm AC_DEFINE(HAVE_IPV6, 1, [Define if you have IPv6.]) 12178527Sassarelse 12278527Sassar CFLAGS="${save_CFLAGS}" 12355682Smarkmfi 12490926Snectar 12590926Snectar## test for AIX missing in6addr_loopback 12690926Snectarif test "$ac_cv_lib_ipv6" = yes; then 12790926Snectar AC_CACHE_CHECK([for in6addr_loopback],[ac_cv_var_in6addr_loopback],[ 128178825Sdfr AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 12990926Snectar#ifdef HAVE_SYS_TYPES_H 13090926Snectar#include <sys/types.h> 13190926Snectar#endif 13290926Snectar#ifdef HAVE_SYS_SOCKET_H 13390926Snectar#include <sys/socket.h> 13490926Snectar#endif 13590926Snectar#ifdef HAVE_NETINET_IN_H 13690926Snectar#include <netinet/in.h> 13790926Snectar#endif 13890926Snectar#ifdef HAVE_NETINET_IN6_H 13990926Snectar#include <netinet/in6.h> 140178825Sdfr#endif]],[[ 14190926Snectarstruct sockaddr_in6 sin6; 14290926Snectarsin6.sin6_addr = in6addr_loopback; 143178825Sdfr]])],[ac_cv_var_in6addr_loopback=yes],[ac_cv_var_in6addr_loopback=no])]) 14490926Snectar if test "$ac_cv_var_in6addr_loopback" = yes; then 14590926Snectar AC_DEFINE(HAVE_IN6ADDR_LOOPBACK, 1, 14690926Snectar [Define if you have the in6addr_loopback variable]) 14790926Snectar fi 14890926Snectarfi 14990926Snectar])