krb-ipv6.m4 revision 90926
1dnl $Id: krb-ipv6.m4,v 1.12 2001/08/19 16:27:02 joda Exp $ 2dnl 3dnl test for IPv6 4dnl 5AC_DEFUN(AC_KRB_IPV6, [ 6AC_ARG_WITH(ipv6, 7[ --without-ipv6 do not enable IPv6 support],[ 8if test "$withval" = "no"; then 9 ac_cv_lib_ipv6=no 10fi]) 11save_CFLAGS="${CFLAGS}" 12AC_CACHE_VAL(ac_cv_lib_ipv6, 13[dnl check for different v6 implementations (by itojun) 14v6type=unknown 15v6lib=none 16 17AC_MSG_CHECKING([ipv6 stack type]) 18for i in v6d toshiba kame inria zeta linux; do 19 case $i in 20 v6d) 21 AC_EGREP_CPP(yes, [ 22#include </usr/local/v6/include/sys/types.h> 23#ifdef __V6D__ 24yes 25#endif], 26 [v6type=$i; v6lib=v6; 27 v6libdir=/usr/local/v6/lib; 28 CFLAGS="-I/usr/local/v6/include $CFLAGS"]) 29 ;; 30 toshiba) 31 AC_EGREP_CPP(yes, [ 32#include <sys/param.h> 33#ifdef _TOSHIBA_INET6 34yes 35#endif], 36 [v6type=$i; v6lib=inet6; 37 v6libdir=/usr/local/v6/lib; 38 CFLAGS="-DINET6 $CFLAGS"]) 39 ;; 40 kame) 41 AC_EGREP_CPP(yes, [ 42#include <netinet/in.h> 43#ifdef __KAME__ 44yes 45#endif], 46 [v6type=$i; v6lib=inet6; 47 v6libdir=/usr/local/v6/lib; 48 CFLAGS="-DINET6 $CFLAGS"]) 49 ;; 50 inria) 51 AC_EGREP_CPP(yes, [ 52#include <netinet/in.h> 53#ifdef IPV6_INRIA_VERSION 54yes 55#endif], 56 [v6type=$i; CFLAGS="-DINET6 $CFLAGS"]) 57 ;; 58 zeta) 59 AC_EGREP_CPP(yes, [ 60#include <sys/param.h> 61#ifdef _ZETA_MINAMI_INET6 62yes 63#endif], 64 [v6type=$i; v6lib=inet6; 65 v6libdir=/usr/local/v6/lib; 66 CFLAGS="-DINET6 $CFLAGS"]) 67 ;; 68 linux) 69 if test -d /usr/inet6; then 70 v6type=$i 71 v6lib=inet6 72 v6libdir=/usr/inet6 73 CFLAGS="-DINET6 $CFLAGS" 74 fi 75 ;; 76 esac 77 if test "$v6type" != "unknown"; then 78 break 79 fi 80done 81AC_MSG_RESULT($v6type) 82 83if test "$v6lib" != "none"; then 84 for dir in $v6libdir /usr/local/v6/lib /usr/local/lib; do 85 if test -d $dir -a -f $dir/lib$v6lib.a; then 86 LIBS="-L$dir -l$v6lib $LIBS" 87 break 88 fi 89 done 90fi 91AC_TRY_LINK([ 92#ifdef HAVE_SYS_TYPES_H 93#include <sys/types.h> 94#endif 95#ifdef HAVE_SYS_SOCKET_H 96#include <sys/socket.h> 97#endif 98#ifdef HAVE_NETINET_IN_H 99#include <netinet/in.h> 100#endif 101#ifdef HAVE_NETINET_IN6_H 102#include <netinet/in6.h> 103#endif 104], 105[ 106 struct sockaddr_in6 sin6; 107 int s; 108 109 s = socket(AF_INET6, SOCK_DGRAM, 0); 110 111 sin6.sin6_family = AF_INET6; 112 sin6.sin6_port = htons(17); 113 sin6.sin6_addr = in6addr_any; 114 bind(s, (struct sockaddr *)&sin6, sizeof(sin6)); 115], 116ac_cv_lib_ipv6=yes, 117ac_cv_lib_ipv6=no)]) 118AC_MSG_CHECKING(for IPv6) 119AC_MSG_RESULT($ac_cv_lib_ipv6) 120if test "$ac_cv_lib_ipv6" = yes; then 121 AC_DEFINE(HAVE_IPV6, 1, [Define if you have IPv6.]) 122else 123 CFLAGS="${save_CFLAGS}" 124fi 125 126## test for AIX missing in6addr_loopback 127if test "$ac_cv_lib_ipv6" = yes; then 128 AC_CACHE_CHECK([for in6addr_loopback],[ac_cv_var_in6addr_loopback],[ 129 AC_TRY_LINK([ 130#ifdef HAVE_SYS_TYPES_H 131#include <sys/types.h> 132#endif 133#ifdef HAVE_SYS_SOCKET_H 134#include <sys/socket.h> 135#endif 136#ifdef HAVE_NETINET_IN_H 137#include <netinet/in.h> 138#endif 139#ifdef HAVE_NETINET_IN6_H 140#include <netinet/in6.h> 141#endif],[ 142struct sockaddr_in6 sin6; 143sin6.sin6_addr = in6addr_loopback; 144],ac_cv_var_in6addr_loopback=yes,ac_cv_var_in6addr_loopback=no)]) 145 if test "$ac_cv_var_in6addr_loopback" = yes; then 146 AC_DEFINE(HAVE_IN6ADDR_LOOPBACK, 1, 147 [Define if you have the in6addr_loopback variable]) 148 fi 149fi 150])