1*2b15cb3dSCy Schubertdnl ###################################################################### 2*2b15cb3dSCy Schubertdnl Common IPv6 detection for NTP configure.ac files 3*2b15cb3dSCy SchubertAC_DEFUN([NTP_IPV6], [ 4*2b15cb3dSCy Schubert 5*2b15cb3dSCy SchubertAC_CACHE_CHECK( 6*2b15cb3dSCy Schubert [for struct sockaddr_storage], 7*2b15cb3dSCy Schubert [ntp_cv_sockaddr_storage], 8*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 9*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 10*2b15cb3dSCy Schubert [[ 11*2b15cb3dSCy Schubert #ifdef HAVE_SYS_TYPES_H 12*2b15cb3dSCy Schubert # include <sys/types.h> 13*2b15cb3dSCy Schubert #endif 14*2b15cb3dSCy Schubert #ifdef HAVE_SYS_SOCKET_H 15*2b15cb3dSCy Schubert # include <sys/socket.h> 16*2b15cb3dSCy Schubert #endif 17*2b15cb3dSCy Schubert #ifdef HAVE_NETINET_IN_H 18*2b15cb3dSCy Schubert # include <netinet/in.h> 19*2b15cb3dSCy Schubert #endif 20*2b15cb3dSCy Schubert ]], 21*2b15cb3dSCy Schubert [[ 22*2b15cb3dSCy Schubert struct sockaddr_storage n; 23*2b15cb3dSCy Schubert ]] 24*2b15cb3dSCy Schubert )], 25*2b15cb3dSCy Schubert [ntp_cv_sockaddr_storage=yes], 26*2b15cb3dSCy Schubert [ntp_cv_sockaddr_storage=no] 27*2b15cb3dSCy Schubert )] 28*2b15cb3dSCy Schubert) 29*2b15cb3dSCy Schubertcase "$ntp_cv_sockaddr_storage" in 30*2b15cb3dSCy Schubert yes) 31*2b15cb3dSCy Schubert AC_DEFINE([HAVE_STRUCT_SOCKADDR_STORAGE], [1], 32*2b15cb3dSCy Schubert [Does a system header define struct sockaddr_storage?]) 33*2b15cb3dSCy Schubert AC_CACHE_CHECK( 34*2b15cb3dSCy Schubert [for sockaddr_storage.__ss_family], 35*2b15cb3dSCy Schubert [ntp_cv_have___ss_family], 36*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 37*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 38*2b15cb3dSCy Schubert [[ 39*2b15cb3dSCy Schubert #ifdef HAVE_SYS_TYPES_H 40*2b15cb3dSCy Schubert # include <sys/types.h> 41*2b15cb3dSCy Schubert #endif 42*2b15cb3dSCy Schubert #ifdef HAVE_SYS_SOCKET_H 43*2b15cb3dSCy Schubert # include <sys/socket.h> 44*2b15cb3dSCy Schubert #endif 45*2b15cb3dSCy Schubert #ifdef HAVE_NETINET_IN_H 46*2b15cb3dSCy Schubert # include <netinet/in.h> 47*2b15cb3dSCy Schubert #endif 48*2b15cb3dSCy Schubert ]], 49*2b15cb3dSCy Schubert [[ 50*2b15cb3dSCy Schubert struct sockaddr_storage s; 51*2b15cb3dSCy Schubert s.__ss_family = 1; 52*2b15cb3dSCy Schubert ]] 53*2b15cb3dSCy Schubert )], 54*2b15cb3dSCy Schubert [ntp_cv_have___ss_family=yes], 55*2b15cb3dSCy Schubert [ntp_cv_have___ss_family=no] 56*2b15cb3dSCy Schubert )] 57*2b15cb3dSCy Schubert ) 58*2b15cb3dSCy Schubert case "$ntp_cv_have___ss_family" in 59*2b15cb3dSCy Schubert yes) 60*2b15cb3dSCy Schubert AC_DEFINE([HAVE___SS_FAMILY_IN_SS], [1], 61*2b15cb3dSCy Schubert [Does struct sockaddr_storage have __ss_family?]) 62*2b15cb3dSCy Schubert esac 63*2b15cb3dSCy Schubert AH_VERBATIM( 64*2b15cb3dSCy Schubert [HAVE___SS_FAMILY_IN_SS_VERBATIM], 65*2b15cb3dSCy Schubert [ 66*2b15cb3dSCy Schubert /* Handle sockaddr_storage.__ss_family */ 67*2b15cb3dSCy Schubert #ifdef HAVE___SS_FAMILY_IN_SS 68*2b15cb3dSCy Schubert # define ss_family __ss_family 69*2b15cb3dSCy Schubert #endif /* HAVE___SS_FAMILY_IN_SS */ 70*2b15cb3dSCy Schubert ] 71*2b15cb3dSCy Schubert ) 72*2b15cb3dSCy Schubertesac 73*2b15cb3dSCy Schubert 74*2b15cb3dSCy Schubert 75*2b15cb3dSCy Schubert# 76*2b15cb3dSCy Schubert# Look for in_port_t. 77*2b15cb3dSCy Schubert# 78*2b15cb3dSCy SchubertAC_CACHE_CHECK( 79*2b15cb3dSCy Schubert [for in_port_t], 80*2b15cb3dSCy Schubert [isc_cv_have_in_port_t], 81*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 82*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 83*2b15cb3dSCy Schubert [[ 84*2b15cb3dSCy Schubert #include <sys/types.h> 85*2b15cb3dSCy Schubert #include <netinet/in.h> 86*2b15cb3dSCy Schubert ]], 87*2b15cb3dSCy Schubert [[ 88*2b15cb3dSCy Schubert in_port_t port = 25; 89*2b15cb3dSCy Schubert return (0); 90*2b15cb3dSCy Schubert ]] 91*2b15cb3dSCy Schubert )], 92*2b15cb3dSCy Schubert [isc_cv_have_in_port_t=yes], 93*2b15cb3dSCy Schubert [isc_cv_have_in_port_t=no] 94*2b15cb3dSCy Schubert )] 95*2b15cb3dSCy Schubert) 96*2b15cb3dSCy Schubertcase "$isc_cv_have_in_port_t" in 97*2b15cb3dSCy Schubert no) 98*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_NEEDPORTT], [1], 99*2b15cb3dSCy Schubert [Declare in_port_t?]) 100*2b15cb3dSCy Schubertesac 101*2b15cb3dSCy Schubert 102*2b15cb3dSCy SchubertAC_CACHE_CHECK( 103*2b15cb3dSCy Schubert [type of socklen arg for getsockname()], 104*2b15cb3dSCy Schubert [ntp_cv_getsockname_socklen_type], 105*2b15cb3dSCy Schubert [ 106*2b15cb3dSCy Schubert getsockname_socklen_type_found=no 107*2b15cb3dSCy Schubert for getsockname_arg2 in 'struct sockaddr *' 'void *'; do 108*2b15cb3dSCy Schubert for ntp_cv_getsockname_socklen_type in 'socklen_t' 'size_t' 'unsigned int' 'int'; do 109*2b15cb3dSCy Schubert AC_COMPILE_IFELSE( 110*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 111*2b15cb3dSCy Schubert [[ 112*2b15cb3dSCy Schubert #ifdef HAVE_SYS_TYPES_H 113*2b15cb3dSCy Schubert # include <sys/types.h> 114*2b15cb3dSCy Schubert #endif 115*2b15cb3dSCy Schubert #ifdef HAVE_SYS_SOCKET_H 116*2b15cb3dSCy Schubert # include <sys/socket.h> 117*2b15cb3dSCy Schubert #endif 118*2b15cb3dSCy Schubert ]], [[ 119*2b15cb3dSCy Schubert extern 120*2b15cb3dSCy Schubert getsockname(int, $getsockname_arg2, 121*2b15cb3dSCy Schubert $ntp_cv_getsockname_socklen_type *); 122*2b15cb3dSCy Schubert ]] 123*2b15cb3dSCy Schubert )], 124*2b15cb3dSCy Schubert [getsockname_socklen_type_found=yes ; break 2], 125*2b15cb3dSCy Schubert [] 126*2b15cb3dSCy Schubert ) 127*2b15cb3dSCy Schubert done 128*2b15cb3dSCy Schubert done 129*2b15cb3dSCy Schubert case "$getsockname_socklen_type_found" in 130*2b15cb3dSCy Schubert no) 131*2b15cb3dSCy Schubert ntp_cv_getsockname_socklen_type='socklen_t' 132*2b15cb3dSCy Schubert esac 133*2b15cb3dSCy Schubert AS_UNSET([getsockname_arg2]) 134*2b15cb3dSCy Schubert AS_UNSET([getsockname_socklen_type_found]) 135*2b15cb3dSCy Schubert ] 136*2b15cb3dSCy Schubert) 137*2b15cb3dSCy SchubertAC_DEFINE_UNQUOTED([GETSOCKNAME_SOCKLEN_TYPE], 138*2b15cb3dSCy Schubert [$ntp_cv_getsockname_socklen_type], 139*2b15cb3dSCy Schubert [What is getsockname()'s socklen type?]) 140*2b15cb3dSCy Schubert 141*2b15cb3dSCy SchubertAC_CACHE_CHECK( 142*2b15cb3dSCy Schubert [struct sockaddr for sa_len], 143*2b15cb3dSCy Schubert [isc_cv_platform_havesalen], 144*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 145*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 146*2b15cb3dSCy Schubert [[ 147*2b15cb3dSCy Schubert #include <sys/types.h> 148*2b15cb3dSCy Schubert #include <sys/socket.h> 149*2b15cb3dSCy Schubert ]], 150*2b15cb3dSCy Schubert [[ 151*2b15cb3dSCy Schubert extern struct sockaddr *ps; 152*2b15cb3dSCy Schubert return ps->sa_len; 153*2b15cb3dSCy Schubert ]] 154*2b15cb3dSCy Schubert )], 155*2b15cb3dSCy Schubert [isc_cv_platform_havesalen=yes], 156*2b15cb3dSCy Schubert [isc_cv_platform_havesalen=no] 157*2b15cb3dSCy Schubert )] 158*2b15cb3dSCy Schubert) 159*2b15cb3dSCy Schubertcase "$isc_cv_platform_havesalen" in 160*2b15cb3dSCy Schubert yes) 161*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVESALEN], [1], 162*2b15cb3dSCy Schubert [struct sockaddr has sa_len?]) 163*2b15cb3dSCy Schubertesac 164*2b15cb3dSCy Schubert 165*2b15cb3dSCy SchubertAC_ARG_ENABLE( 166*2b15cb3dSCy Schubert [ipv6], 167*2b15cb3dSCy Schubert [AS_HELP_STRING( 168*2b15cb3dSCy Schubert [--enable-ipv6], 169*2b15cb3dSCy Schubert [s use IPv6?] 170*2b15cb3dSCy Schubert )] 171*2b15cb3dSCy Schubert) 172*2b15cb3dSCy Schubert 173*2b15cb3dSCy Schubertcase "$enable_ipv6" in 174*2b15cb3dSCy Schubert yes|''|autodetect) 175*2b15cb3dSCy Schubert case "$host" in 176*2b15cb3dSCy Schubert powerpc-ibm-aix4*) 177*2b15cb3dSCy Schubert ;; 178*2b15cb3dSCy Schubert *) 179*2b15cb3dSCy Schubert AC_DEFINE([WANT_IPV6], [1], [configure --enable-ipv6]) 180*2b15cb3dSCy Schubert ;; 181*2b15cb3dSCy Schubert esac 182*2b15cb3dSCy Schubert ;; 183*2b15cb3dSCy Schubert no) 184*2b15cb3dSCy Schubert ;; 185*2b15cb3dSCy Schubertesac 186*2b15cb3dSCy Schubert 187*2b15cb3dSCy Schubert 188*2b15cb3dSCy Schubertdnl [Bug 1984] ntp/libisc fails to compile on OS X 10.7 (Lion) 189*2b15cb3dSCy Schubertcase "$host" in 190*2b15cb3dSCy Schubert *-*-darwin*) 191*2b15cb3dSCy Schubert AC_DEFINE([__APPLE_USE_RFC_3542], [1], [Are we _special_?]) 192*2b15cb3dSCy Schubertesac 193*2b15cb3dSCy Schubert 194*2b15cb3dSCy Schubert 195*2b15cb3dSCy SchubertAC_CACHE_CHECK( 196*2b15cb3dSCy Schubert [for IPv6 structures], 197*2b15cb3dSCy Schubert [isc_cv_found_ipv6], 198*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 199*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 200*2b15cb3dSCy Schubert [[ 201*2b15cb3dSCy Schubert #include <sys/types.h> 202*2b15cb3dSCy Schubert #include <sys/socket.h> 203*2b15cb3dSCy Schubert #include <netinet/in.h> 204*2b15cb3dSCy Schubert ]], 205*2b15cb3dSCy Schubert [[ 206*2b15cb3dSCy Schubert struct sockaddr_in6 sin6; 207*2b15cb3dSCy Schubert ]] 208*2b15cb3dSCy Schubert )], 209*2b15cb3dSCy Schubert [isc_cv_found_ipv6=yes], 210*2b15cb3dSCy Schubert [isc_cv_found_ipv6=no] 211*2b15cb3dSCy Schubert )] 212*2b15cb3dSCy Schubert) 213*2b15cb3dSCy Schubert 214*2b15cb3dSCy Schubert# 215*2b15cb3dSCy Schubert# See whether IPv6 support is provided via a Kame add-on. 216*2b15cb3dSCy Schubert# This is done before other IPv6 linking tests so LIBS is properly set. 217*2b15cb3dSCy Schubert# 218*2b15cb3dSCy SchubertAC_MSG_CHECKING([for Kame IPv6 support]) 219*2b15cb3dSCy SchubertAC_ARG_WITH( 220*2b15cb3dSCy Schubert [kame], 221*2b15cb3dSCy Schubert [AS_HELP_STRING( 222*2b15cb3dSCy Schubert [--with-kame], 223*2b15cb3dSCy Schubert [- =/usr/local/v6] 224*2b15cb3dSCy Schubert )], 225*2b15cb3dSCy Schubert [use_kame="$withval"], 226*2b15cb3dSCy Schubert [use_kame="no"] 227*2b15cb3dSCy Schubert) 228*2b15cb3dSCy Schubertcase "$use_kame" in 229*2b15cb3dSCy Schubert no) 230*2b15cb3dSCy Schubert ;; 231*2b15cb3dSCy Schubert yes) 232*2b15cb3dSCy Schubert kame_path=/usr/local/v6 233*2b15cb3dSCy Schubert ;; 234*2b15cb3dSCy Schubert *) 235*2b15cb3dSCy Schubert kame_path="$use_kame" 236*2b15cb3dSCy Schubert ;; 237*2b15cb3dSCy Schubertesac 238*2b15cb3dSCy Schubertcase "$use_kame" in 239*2b15cb3dSCy Schubert no) 240*2b15cb3dSCy Schubert AC_MSG_RESULT([no]) 241*2b15cb3dSCy Schubert ;; 242*2b15cb3dSCy Schubert *) 243*2b15cb3dSCy Schubert if test -f $kame_path/lib/libinet6.a; then 244*2b15cb3dSCy Schubert AC_MSG_RESULT([$kame_path/lib/libinet6.a]) 245*2b15cb3dSCy Schubert LIBS="-L$kame_path/lib -linet6 $LIBS" 246*2b15cb3dSCy Schubert else 247*2b15cb3dSCy Schubert AC_MSG_ERROR([$kame_path/lib/libinet6.a not found. 248*2b15cb3dSCy Schubert 249*2b15cb3dSCy SchubertPlease choose the proper path with the following command: 250*2b15cb3dSCy Schubert 251*2b15cb3dSCy Schubert configure --with-kame=PATH 252*2b15cb3dSCy Schubert]) 253*2b15cb3dSCy Schubert fi 254*2b15cb3dSCy Schubert ;; 255*2b15cb3dSCy Schubertesac 256*2b15cb3dSCy Schubert 257*2b15cb3dSCy Schubert# 258*2b15cb3dSCy Schubert# Whether netinet6/in6.h is needed has to be defined in isc/platform.h. 259*2b15cb3dSCy Schubert# Including it on Kame-using platforms is very bad, though, because 260*2b15cb3dSCy Schubert# Kame uses #error against direct inclusion. So include it on only 261*2b15cb3dSCy Schubert# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1. 262*2b15cb3dSCy Schubert# This is done before the in6_pktinfo check because that's what 263*2b15cb3dSCy Schubert# netinet6/in6.h is needed for. 264*2b15cb3dSCy Schubert# 265*2b15cb3dSCy Schubertcase "$host" in 266*2b15cb3dSCy Schubert *-bsdi4.[[01]]*) 267*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_NEEDNETINET6IN6H], [1], 268*2b15cb3dSCy Schubert [Do we need netinet6/in6.h?]) 269*2b15cb3dSCy Schubert isc_netinet6in6_hack="#include <netinet6/in6.h>" 270*2b15cb3dSCy Schubert ;; 271*2b15cb3dSCy Schubert *) 272*2b15cb3dSCy Schubert isc_netinet6in6_hack="" 273*2b15cb3dSCy Schubert ;; 274*2b15cb3dSCy Schubertesac 275*2b15cb3dSCy Schubert 276*2b15cb3dSCy Schubert# 277*2b15cb3dSCy Schubert# This is similar to the netinet6/in6.h issue. 278*2b15cb3dSCy Schubert# 279*2b15cb3dSCy Schubertcase "$host" in 280*2b15cb3dSCy Schubert *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*) 281*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_FIXIN6ISADDR], [1], 282*2b15cb3dSCy Schubert [Do we need to fix in6isaddr?]) 283*2b15cb3dSCy Schubert isc_netinetin6_hack="#include <netinet/in6.h>" 284*2b15cb3dSCy Schubert ;; 285*2b15cb3dSCy Schubert *) 286*2b15cb3dSCy Schubert isc_netinetin6_hack="" 287*2b15cb3dSCy Schubert ;; 288*2b15cb3dSCy Schubertesac 289*2b15cb3dSCy Schubert 290*2b15cb3dSCy Schubert 291*2b15cb3dSCy Schubertcase "$isc_cv_found_ipv6" in 292*2b15cb3dSCy Schubert yes) 293*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVEIPV6], [1], [have IPv6?]) 294*2b15cb3dSCy Schubert AC_CACHE_CHECK( 295*2b15cb3dSCy Schubert [for in6_pktinfo], 296*2b15cb3dSCy Schubert [isc_cv_have_in6_pktinfo], 297*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 298*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 299*2b15cb3dSCy Schubert [[ 300*2b15cb3dSCy Schubert #include <sys/types.h> 301*2b15cb3dSCy Schubert #include <sys/socket.h> 302*2b15cb3dSCy Schubert #include <netinet/in.h> 303*2b15cb3dSCy Schubert $isc_netinetin6_hack 304*2b15cb3dSCy Schubert $isc_netinet6in6_hack 305*2b15cb3dSCy Schubert ]], 306*2b15cb3dSCy Schubert [[ 307*2b15cb3dSCy Schubert struct in6_pktinfo xyzzy; 308*2b15cb3dSCy Schubert ]] 309*2b15cb3dSCy Schubert )], 310*2b15cb3dSCy Schubert [isc_cv_have_in6_pktinfo=yes], 311*2b15cb3dSCy Schubert [isc_cv_have_in6_pktinfo=no] 312*2b15cb3dSCy Schubert )] 313*2b15cb3dSCy Schubert ) 314*2b15cb3dSCy Schubert case "$isc_cv_have_in6_pktinfo" in 315*2b15cb3dSCy Schubert yes) 316*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVEIN6PKTINFO], [1], 317*2b15cb3dSCy Schubert [have struct in6_pktinfo?]) 318*2b15cb3dSCy Schubert esac 319*2b15cb3dSCy Schubert 320*2b15cb3dSCy Schubert 321*2b15cb3dSCy Schubert # HMS: Use HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID instead? 322*2b15cb3dSCy Schubert AC_CACHE_CHECK( 323*2b15cb3dSCy Schubert [for sockaddr_in6.sin6_scope_id], 324*2b15cb3dSCy Schubert [isc_cv_have_sin6_scope_id], 325*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 326*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 327*2b15cb3dSCy Schubert [[ 328*2b15cb3dSCy Schubert #include <sys/types.h> 329*2b15cb3dSCy Schubert #include <sys/socket.h> 330*2b15cb3dSCy Schubert #include <netinet/in.h> 331*2b15cb3dSCy Schubert $isc_netinetin6_hack 332*2b15cb3dSCy Schubert $isc_netinet6in6_hack 333*2b15cb3dSCy Schubert ]], 334*2b15cb3dSCy Schubert [[ 335*2b15cb3dSCy Schubert struct sockaddr_in6 xyzzy; 336*2b15cb3dSCy Schubert xyzzy.sin6_scope_id = 0; 337*2b15cb3dSCy Schubert ]] 338*2b15cb3dSCy Schubert )], 339*2b15cb3dSCy Schubert [isc_cv_have_sin6_scope_id=yes], 340*2b15cb3dSCy Schubert [isc_cv_have_sin6_scope_id=no] 341*2b15cb3dSCy Schubert )] 342*2b15cb3dSCy Schubert ) 343*2b15cb3dSCy Schubert 344*2b15cb3dSCy Schubert case "$isc_cv_have_sin6_scope_id" in 345*2b15cb3dSCy Schubert yes) 346*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVESCOPEID], [1], [sin6_scope_id?]) 347*2b15cb3dSCy Schubert esac 348*2b15cb3dSCy Schubertesac 349*2b15cb3dSCy Schubert 350*2b15cb3dSCy Schubert 351*2b15cb3dSCy Schubert# We need this check run even without isc_cv_found_ipv6=yes 352*2b15cb3dSCy Schubert 353*2b15cb3dSCy SchubertAC_CACHE_CHECK( 354*2b15cb3dSCy Schubert [for in6addr_any], 355*2b15cb3dSCy Schubert [isc_cv_in6addr_any_links], 356*2b15cb3dSCy Schubert [ 357*2b15cb3dSCy Schubert SAVED_LIBS="$LIBS" 358*2b15cb3dSCy Schubert LIBS="$LDADD_LIBNTP $LIBS" 359*2b15cb3dSCy Schubert AC_LINK_IFELSE( 360*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 361*2b15cb3dSCy Schubert AC_INCLUDES_DEFAULT [[ 362*2b15cb3dSCy Schubert #include <sys/socket.h> 363*2b15cb3dSCy Schubert #include <netinet/in.h> 364*2b15cb3dSCy Schubert $isc_netinetin6_hack 365*2b15cb3dSCy Schubert $isc_netinet6in6_hack 366*2b15cb3dSCy Schubert ]], 367*2b15cb3dSCy Schubert [[ 368*2b15cb3dSCy Schubert printf("%x", in6addr_any.s6_addr[15]); 369*2b15cb3dSCy Schubert ]] 370*2b15cb3dSCy Schubert )], 371*2b15cb3dSCy Schubert [isc_cv_in6addr_any_links=yes], 372*2b15cb3dSCy Schubert [isc_cv_in6addr_any_links=no] 373*2b15cb3dSCy Schubert ) 374*2b15cb3dSCy Schubert LIBS="$SAVED_LIBS" 375*2b15cb3dSCy Schubert AS_UNSET([SAVED_LIBS]) 376*2b15cb3dSCy Schubert ] 377*2b15cb3dSCy Schubert) 378*2b15cb3dSCy Schubert 379*2b15cb3dSCy Schubertcase "$isc_cv_in6addr_any_links" in 380*2b15cb3dSCy Schubert no) 381*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_NEEDIN6ADDRANY], [1], [missing in6addr_any?]) 382*2b15cb3dSCy Schubertesac 383*2b15cb3dSCy Schubert 384*2b15cb3dSCy Schubert 385*2b15cb3dSCy SchubertAC_CACHE_CHECK( 386*2b15cb3dSCy Schubert [for struct if_laddrconf], 387*2b15cb3dSCy Schubert [isc_cv_struct_if_laddrconf], 388*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 389*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 390*2b15cb3dSCy Schubert [[ 391*2b15cb3dSCy Schubert #include <sys/types.h> 392*2b15cb3dSCy Schubert #include <net/if6.h> 393*2b15cb3dSCy Schubert ]], 394*2b15cb3dSCy Schubert [[ 395*2b15cb3dSCy Schubert struct if_laddrconf a; 396*2b15cb3dSCy Schubert ]] 397*2b15cb3dSCy Schubert )], 398*2b15cb3dSCy Schubert [isc_cv_struct_if_laddrconf=yes], 399*2b15cb3dSCy Schubert [isc_cv_struct_if_laddrconf=no] 400*2b15cb3dSCy Schubert )] 401*2b15cb3dSCy Schubert) 402*2b15cb3dSCy Schubert 403*2b15cb3dSCy Schubertcase "$isc_cv_struct_if_laddrconf" in 404*2b15cb3dSCy Schubert yes) 405*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRCONF], [1], 406*2b15cb3dSCy Schubert [have struct if_laddrconf?]) 407*2b15cb3dSCy Schubertesac 408*2b15cb3dSCy Schubert 409*2b15cb3dSCy SchubertAC_CACHE_CHECK( 410*2b15cb3dSCy Schubert [for struct if_laddrreq], 411*2b15cb3dSCy Schubert isc_cv_struct_if_laddrreq, 412*2b15cb3dSCy Schubert [AC_COMPILE_IFELSE( 413*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 414*2b15cb3dSCy Schubert [[ 415*2b15cb3dSCy Schubert #include <sys/types.h> 416*2b15cb3dSCy Schubert #include <net/if6.h> 417*2b15cb3dSCy Schubert ]], 418*2b15cb3dSCy Schubert [[ 419*2b15cb3dSCy Schubert struct if_laddrreq a; 420*2b15cb3dSCy Schubert ]] 421*2b15cb3dSCy Schubert )], 422*2b15cb3dSCy Schubert [isc_cv_struct_if_laddrreq=yes], 423*2b15cb3dSCy Schubert [isc_cv_struct_if_laddrreq=no] 424*2b15cb3dSCy Schubert )] 425*2b15cb3dSCy Schubert) 426*2b15cb3dSCy Schubert 427*2b15cb3dSCy Schubertcase "$isc_cv_struct_if_laddrreq" in 428*2b15cb3dSCy Schubert yes) 429*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRREQ], [1], 430*2b15cb3dSCy Schubert [have struct if_laddrreq?]) 431*2b15cb3dSCy Schubertesac 432*2b15cb3dSCy Schubert 433*2b15cb3dSCy SchubertAC_CACHE_CHECK( 434*2b15cb3dSCy Schubert [for multicast IP support], 435*2b15cb3dSCy Schubert [ntp_cv_multicast], 436*2b15cb3dSCy Schubert [ 437*2b15cb3dSCy Schubert ntp_cv_multicast=no 438*2b15cb3dSCy Schubert case "$host" in 439*2b15cb3dSCy Schubert i386-sequent-sysv4) 440*2b15cb3dSCy Schubert ;; 441*2b15cb3dSCy Schubert *) 442*2b15cb3dSCy Schubert AC_COMPILE_IFELSE( 443*2b15cb3dSCy Schubert [AC_LANG_PROGRAM( 444*2b15cb3dSCy Schubert [[ 445*2b15cb3dSCy Schubert #ifdef HAVE_NETINET_IN_H 446*2b15cb3dSCy Schubert # include <netinet/in.h> 447*2b15cb3dSCy Schubert #endif 448*2b15cb3dSCy Schubert ]], 449*2b15cb3dSCy Schubert [[ 450*2b15cb3dSCy Schubert struct ip_mreq ipmr; 451*2b15cb3dSCy Schubert ipmr.imr_interface.s_addr = 0; 452*2b15cb3dSCy Schubert ]] 453*2b15cb3dSCy Schubert )], 454*2b15cb3dSCy Schubert [ntp_cv_multicast=yes], 455*2b15cb3dSCy Schubert [] 456*2b15cb3dSCy Schubert ) 457*2b15cb3dSCy Schubert ;; 458*2b15cb3dSCy Schubert esac 459*2b15cb3dSCy Schubert ] 460*2b15cb3dSCy Schubert) 461*2b15cb3dSCy Schubertcase "$ntp_cv_multicast" in 462*2b15cb3dSCy Schubert yes) 463*2b15cb3dSCy Schubert AC_DEFINE([MCAST], [1], [Does the target support multicast IP?]) 464*2b15cb3dSCy Schubert AC_CACHE_CHECK( 465*2b15cb3dSCy Schubert [arg type needed for setsockopt() IP*_MULTICAST_LOOP], 466*2b15cb3dSCy Schubert [ntp_cv_typeof_ip_multicast_loop], 467*2b15cb3dSCy Schubert [ 468*2b15cb3dSCy Schubert case "$host" in 469*2b15cb3dSCy Schubert *-*-netbsd*|*-*-*linux*) 470*2b15cb3dSCy Schubert ntp_cv_typeof_ip_multicast_loop=u_int 471*2b15cb3dSCy Schubert ;; 472*2b15cb3dSCy Schubert *) 473*2b15cb3dSCy Schubert ntp_cv_typeof_ip_multicast_loop=u_char 474*2b15cb3dSCy Schubert ;; 475*2b15cb3dSCy Schubert esac 476*2b15cb3dSCy Schubert ] 477*2b15cb3dSCy Schubert ) 478*2b15cb3dSCy Schubert AC_DEFINE_UNQUOTED([TYPEOF_IP_MULTICAST_LOOP], 479*2b15cb3dSCy Schubert [$ntp_cv_typeof_ip_multicast_loop], 480*2b15cb3dSCy Schubert [What type to use for setsockopt]) 481*2b15cb3dSCy Schubertesac 482*2b15cb3dSCy Schubert 483*2b15cb3dSCy SchubertAC_ARG_ENABLE( 484*2b15cb3dSCy Schubert [getifaddrs], 485*2b15cb3dSCy Schubert [AS_HELP_STRING( 486*2b15cb3dSCy Schubert [--enable-getifaddrs], 487*2b15cb3dSCy Schubert [+ Enable the use of getifaddrs() [[yes|no]].] 488*2b15cb3dSCy Schubert )], 489*2b15cb3dSCy Schubert [want_getifaddrs="$enableval"], 490*2b15cb3dSCy Schubert [want_getifaddrs="yes"] 491*2b15cb3dSCy Schubert) 492*2b15cb3dSCy Schubert 493*2b15cb3dSCy Schubertcase $want_getifaddrs in 494*2b15cb3dSCy Schubert glibc) 495*2b15cb3dSCy Schubert AC_MSG_WARN([--enable-getifaddrs=glibc is no longer required]) 496*2b15cb3dSCy Schubertesac 497*2b15cb3dSCy Schubertcase $want_getifaddrs in 498*2b15cb3dSCy Schubert no) 499*2b15cb3dSCy Schubert ;; 500*2b15cb3dSCy Schubert *) 501*2b15cb3dSCy Schubert SAVED_LIBS="$LIBS" 502*2b15cb3dSCy Schubert LIBS="$LDADD_LIBNTP $LIBS" 503*2b15cb3dSCy Schubert AC_CHECK_FUNCS([getifaddrs]) 504*2b15cb3dSCy Schubert LIBS="$SAVED_LIBS" 505*2b15cb3dSCy Schubert AS_UNSET([SAVED_LIBS]) 506*2b15cb3dSCy Schubert ;; 507*2b15cb3dSCy Schubertesac 508*2b15cb3dSCy Schubert 509*2b15cb3dSCy Schubert# 510*2b15cb3dSCy Schubert# Check for if_nametoindex() for IPv6 scoped addresses support 511*2b15cb3dSCy Schubert# 512*2b15cb3dSCy Schubertcase "$host" in 513*2b15cb3dSCy Schubert *-hp-hpux*) 514*2b15cb3dSCy Schubert AC_SEARCH_LIBS([if_nametoindex], [ipv6]) 515*2b15cb3dSCy Schubertesac 516*2b15cb3dSCy SchubertSAVED_LIBS="$LIBS" 517*2b15cb3dSCy SchubertLIBS="$LDADD_LIBNTP $LIBS" 518*2b15cb3dSCy SchubertAC_CHECK_FUNCS([if_nametoindex]) 519*2b15cb3dSCy SchubertLIBS="$SAVED_LIBS" 520*2b15cb3dSCy SchubertAS_UNSET([SAVED_LIBS]) 521*2b15cb3dSCy Schubertcase "$ac_cv_func_if_nametoindex" in 522*2b15cb3dSCy Schubert yes) 523*2b15cb3dSCy Schubert AC_DEFINE([ISC_PLATFORM_HAVEIFNAMETOINDEX], [1], 524*2b15cb3dSCy Schubert [ISC: do we have if_nametoindex()?]) 525*2b15cb3dSCy Schubertesac 526*2b15cb3dSCy Schubert 527*2b15cb3dSCy Schubert])dnl 528*2b15cb3dSCy Schubertdnl ====================================================================== 529