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