source: heimdal/trunk/cf/krb-ipv6.m4@ 3

Last change on this file since 3 was 1, checked in by Paul Smedley, 10 years ago

Initial commit of Heimdal 1.5.3

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