/crypto/heimdal/cf/krb-ipv6.m4

https://bitbucket.org/freebsd/freebsd-head/ · m4 · 149 lines · 103 code · 6 blank · 40 comment · 0 complexity · e2177470712df85f26411a6afe7cd520 MD5 · raw file

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