]> git.proxmox.com Git - mirror_frr.git/blob - configure.ac
2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
[mirror_frr.git] / configure.ac
1 ##
2 ## Configure template file for Quagga.
3 ## autoconf will generate configure script.
4 ##
5 ## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
6 ## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
7 ##
8 ## $Id: configure.ac,v 1.78 2004/12/22 14:03:52 ajs Exp $
9 AC_PREREQ(2.53)
10
11 AC_INIT(Quagga, 0.97.3, [http://bugzilla.quagga.net])
12 AC_CONFIG_SRCDIR(lib/zebra.h)
13 AM_INIT_AUTOMAKE(1.6)
14 AM_CONFIG_HEADER(config.h)
15
16 dnl default is to match previous behavior
17 exampledir=${sysconfdir}
18 AC_ARG_ENABLE([exampledir],
19 AC_HELP_STRING([--enable-exampledir],
20 [specify alternate directory for examples]),
21 exampledir="$enableval",)
22 dnl XXX add --exampledir to autoconf standard directory list somehow
23 AC_SUBST(exampledir)
24
25 dnl default is to match previous behavior
26 pkgsrcrcdir=""
27 pkgsrcdir=""
28 AC_ARG_ENABLE([pkgsrcrcdir],
29 AC_HELP_STRING([--enable-pkgsrcrcdir],
30 [specify directory for rc.d scripts]),
31 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
32 dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
33 AC_SUBST(pkgsrcdir)
34 AC_SUBST(pkgsrcrcdir)
35
36 dnl -----------------------------------
37 dnl Get hostname and other information.
38 dnl -----------------------------------
39 AC_CANONICAL_HOST
40
41 dnl ------------
42 dnl Check CFLAGS
43 dnl ------------
44 AC_ARG_WITH(cflags,
45 [ --with-cflags Set CFLAGS for use in compilation.])
46 if test "x$with_cflags" != "x" ; then
47 CFLAGS="$with_cflags" ; cflags_specified=yes ;
48 elif test -n "$CFLAGS" ; then
49 cflags_specified=yes ;
50 fi
51
52 dnl --------
53 dnl Check CC
54 dnl --------
55 AC_PROG_CC
56
57 dnl ---------------------------------------------
58 dnl If CLFAGS doesn\'t exist set default value
59 dnl AC_PROG_CC will have set minimal default
60 dnl already, eg "-O2 -g" for gcc, "-g" for others
61 dnl (Wall is gcc specific... have to make sure
62 dnl gcc is being used before setting it)
63 dnl ---------------------------------------------
64 dnl
65 if test "x$cflags_specified" = "x" ; then
66 if test "x${GCC}" = "xyes"; then
67 CFLAGS="-Os -g -Wall -Wsign-compare -Wpointer-arith"
68 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
69 fi
70 # TODO: conditionally addd -Wpacked if handled
71 fi
72
73 dnl --------------
74 dnl Check programs
75 dnl --------------
76 AC_PROG_CPP
77 AC_PROG_INSTALL
78 AC_PROG_MAKE_SET
79 AC_CHECK_TOOL(AR, ar)
80 AC_CHECK_TOOL(RANLIB, ranlib, :)
81
82 dnl ---------
83 dnl AIX check
84 dnl ---------
85 AC_AIX
86
87 dnl -------
88 dnl libtool
89 dnl -------
90 AC_PROG_LIBTOOL
91
92 dnl ----------------------
93 dnl Packages configuration
94 dnl ----------------------
95 AC_ARG_ENABLE(vtysh,
96 [ --enable-vtysh include integrated vty shell for Quagga])
97 AC_ARG_ENABLE(ipv6,
98 [ --disable-ipv6 turn off IPv6 related features and daemons])
99 AC_ARG_ENABLE(zebra,
100 [ --disable-zebra do not build zebra daemon])
101 AC_ARG_ENABLE(bgpd,
102 [ --disable-bgpd do not build bgpd])
103 AC_ARG_ENABLE(ripd,
104 [ --disable-ripd do not build ripd])
105 AC_ARG_ENABLE(ripngd,
106 [ --disable-ripngd do not build ripngd])
107 AC_ARG_ENABLE(ospfd,
108 [ --disable-ospfd do not build ospfd])
109 AC_ARG_ENABLE(ospf6d,
110 [ --disable-ospf6d do not build ospf6d])
111 AC_ARG_ENABLE(watchquagga,
112 [ --disable-watchquagga do not build watchquagga])
113 AC_ARG_ENABLE(isisd,
114 [ --enable-isisd build isisd])
115 AC_ARG_ENABLE(bgp-announce,
116 [ --disable-bgp-announce, turn off BGP route announcement])
117 AC_ARG_ENABLE(netlink,
118 [ --enable-netlink force to use Linux netlink interface])
119 AC_ARG_ENABLE(broken-aliases,
120 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
121 AC_ARG_ENABLE(snmp,
122 [ --enable-snmp enable SNMP support])
123 AC_ARG_WITH(libpam,
124 [ --with-libpam use libpam for PAM support in vtysh])
125 AC_ARG_ENABLE(tcp-zebra,
126 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
127 AC_ARG_ENABLE(opaque-lsa,
128 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
129 AC_ARG_ENABLE(ospfapi,
130 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
131 (this is the default if --enable-opaque-lsa is not set)])
132 AC_ARG_ENABLE(ospfclient,
133 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
134 (this is the default if --disable-ospfapi is set)])
135 AC_ARG_ENABLE(ospf-te,
136 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
137 AC_ARG_ENABLE(multipath,
138 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
139 AC_ARG_ENABLE(quagga_user,
140 [ --enable-user=ARG user to run Quagga suite as (default quagga)])
141 AC_ARG_ENABLE(quagga_group,
142 [ --enable-group=ARG group to run Quagga suite as (default quagga)])
143 AC_ARG_ENABLE(vty_group,
144 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
145 AC_ARG_ENABLE(configfile_mask,
146 [ --enable-configfile-mask=ARG set mask for config files])
147 AC_ARG_ENABLE(logfile_mask,
148 [ --enable-logfile-mask=ARG set mask for log files])
149
150 AC_ARG_ENABLE(rtadv,
151 [ --disable-rtadv disable IPV6 router advertisement feature])
152 AC_ARG_ENABLE(irdp,
153 [ --enable-irdp enable IRDP server support in zebra])
154 AC_ARG_ENABLE(capabilities,
155 [ --disable-capabilities disable using POSIX capabilities])
156 AC_ARG_ENABLE(gcc_ultra_verbose,
157 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
158
159 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
160 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
161 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
162 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
163 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
164 fi
165
166 if test "${enable_broken_aliases}" = "yes"; then
167 if test "${enable_netlink}" = "yes"
168 then
169 echo "Sorry, you can't use netlink with broken aliases"
170 exit 1
171 fi
172 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
173 enable_netlink=no
174 fi
175
176 if test "${enable_tcp_zebra}" = "yes"; then
177 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
178 fi
179
180 if test "${enable_opaque_lsa}" = "yes"; then
181 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
182 fi
183
184 if test "${enable_ospf_te}" = "yes"; then
185 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
186 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
187 fi
188
189 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
190 if test "${enable_rtadv}" != "no"; then
191 AC_MSG_RESULT(yes)
192 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
193 else
194 AC_MSG_RESULT(no)
195 fi
196
197 if test "${enable_irdp}" = "yes"; then
198 AC_DEFINE(HAVE_IRDP,, IRDP )
199 fi
200
201 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
202 enable_user="quagga"
203 elif test "${enable_user}" = "no"; then
204 enable_user="root"
205 fi
206 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
207
208 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
209 enable_group="quagga"
210 elif test "${enable_group}" = "no"; then
211 enable_group="root"
212 fi
213 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
214
215 if test x"${enable_vty_group}" = x"yes" ; then
216 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
217 elif test x"${enable_vty_group}" != x""; then
218 if test x"${enable_vty_group}" != x"no"; then
219 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
220 fi
221 fi
222
223 enable_configfile_mask=${enable_configfile_mask:-0600}
224 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
225
226 enable_logfile_mask=${enable_logfile_mask:-0600}
227 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
228
229 changequote(, )dnl
230
231 MULTIPATH_NUM=1
232
233 case "${enable_multipath}" in
234 [0-9]|[1-9][0-9])
235 MULTIPATH_NUM="${enable_multipath}"
236 ;;
237 "")
238 ;;
239 *)
240 echo "Please specify digit to --enable-multipath ARG."
241 exit 1
242 ;;
243 esac
244
245 changequote([, ])dnl
246
247 AC_SUBST(MULTIPATH_NUM)
248
249 dnl -------------------
250 dnl Check header files.
251 dnl -------------------
252 AC_HEADER_STDC
253 AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
254 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
255 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
256 libutil.h limits.h])
257
258 AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
259 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
260 net/if.h net/if_var.h netinet/in_var.h])
261
262 dnl V6 headers are checked below, after we check for v6
263
264 dnl check some types
265 AC_C_CONST
266 dnl AC_TYPE_PID_T
267 AC_TYPE_SIGNAL
268
269 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
270 case "$host" in
271 [*-sunos5.[6-8]*] | [*-solaris2.[6-8]*])
272 opsys=sol2-6
273 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.8)
274 AC_DEFINE(SUNOS_5, 1, SunOS 5)
275 AC_CHECK_LIB(xnet, main)
276 CURSES=-lcurses
277 ;;
278 [*-sunos5.[8-9]] | [*-sunos5.1[0-9]] \
279 | [*-solaris2.[8-9]] | [*-solaris2.1[0-9]])
280 opsys=sol9
281 AC_DEFINE(SUNOS_59,,SunOS 5.9 up)
282 AC_DEFINE(SUNOS_5, 1, SunOS 5)
283 AC_CHECK_LIB(socket, main)
284 AC_CHECK_LIB(nsl, main)
285 CURSES=-lcurses
286 ;;
287 *-sunos5* | *-solaris2*)
288 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
289 AC_CHECK_LIB(socket, main)
290 AC_CHECK_LIB(nsl, main)
291 CURSES=-lcurses
292 ;;
293 *-linux-*)
294 opsys=gnu-linux
295 AC_DEFINE(GNU_LINUX,,GNU Linux)
296 ;;
297 *-nec-sysv4*)
298 AC_CHECK_LIB(nsl, gethostbyname)
299 AC_CHECK_LIB(socket, socket)
300 ;;
301 *-freebsd3.2)
302 AC_DEFINE(FREEBSD_32,,FreeBSD 3.2)
303 ;;
304 *-openbsd*)
305 opsys=openbsd
306 AC_DEFINE(OPEN_BSD,,OpenBSD)
307 ;;
308 *-bsdi*)
309 opsys=bsdi
310 OTHER_METHOD="mtu_kvm.o"
311 AC_CHECK_LIB(kvm, main)
312 ;;
313 *-irix6.5)
314 opsys=irix
315 AC_DEFINE(IRIX_65,,IRIX 6.5)
316 ;;
317 esac
318
319 dnl ---------------------
320 dnl Integrated VTY option
321 dnl ---------------------
322 case "${enable_vtysh}" in
323 "yes") VTYSH="vtysh";
324 AC_DEFINE(VTYSH,,VTY shell)
325 AC_PATH_PROG(PERL, perl)
326 dnl Vtysh uses libreadline, which looks for termcap functions at
327 dnl configure time. We follow readline's search order.
328 dnl The required procedures are in libtermcap on NetBSD, in
329 dnl [TODO] on Linux, and in [TODO] on Solaris.
330 AC_CHECK_LIB(termcap, tputs, ,
331 AC_CHECK_LIB(tinfo, tputs, ,
332 AC_CHECK_LIB(curses, tputs, ,
333 AC_CHECK_LIB(ncurses, tputs))))
334 AC_CHECK_LIB(readline, main)
335 if test $ac_cv_lib_readline_main = no; then
336 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
337 fi
338 AC_CHECK_HEADER(readline/history.h)
339 if test $ac_cv_header_readline_history_h = no;then
340 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
341 fi
342 AC_CHECK_LIB(readline, rl_completion_matches)
343 if test $ac_cv_lib_readline_rl_completion_matches = no; then
344 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
345 fi
346 ;;
347 "no" ) VTYSH="";;
348 * ) ;;
349 esac
350
351 dnl ----------
352 dnl PAM module
353 dnl ----------
354 if test "$with_libpam" = "yes"; then
355 AC_CHECK_HEADER(security/pam_misc.h)
356 if test "$ac_cv_header_security_pam_misc_h" = yes; then
357 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
358 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
359 pam_conv_func="misc_conv"
360 fi
361 AC_CHECK_HEADER(security/openpam.h)
362 if test "$ac_cv_header_security_openpam_h" = yes; then
363 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
364 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
365 pam_conv_func="openpam_ttyconv"
366 fi
367 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
368 AC_MSG_WARN([*** pam support will not be built ***])
369 with_libpam="no"
370 fi
371 fi
372
373 if test "$with_libpam" = "yes"; then
374 dnl took this test from proftpd's configure.in and suited to our needs
375 dnl -------------------------------------------------------------------------
376 dnl
377 dnl This next check looks funky due to a linker problem with some versions
378 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
379 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
380 dnl with RedHat 6.2 and Debian 2.2 or better.
381 AC_CHECK_LIB(pam, pam_start,
382 [AC_CHECK_LIB(pam, $pam_conv_func,
383 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
384 LIBPAM="-lpam"],
385 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
386 LIBPAM="-lpam -lpam_misc"]
387 )
388 ],
389
390 [AC_CHECK_LIB(pam, pam_end,
391 [AC_CHECK_LIB(pam, $pam_conv_func,
392 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
393 LIBPAM="-lpam -ldl"],
394 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
395 LIBPAM="-lpam -ldl -lpam_misc"]
396 )
397 ],AC_MSG_WARN([*** pam support will not be built ***]),
398 [-ldl])
399 ]
400 )
401 fi
402 AC_SUBST(LIBPAM)
403
404 dnl -------------------------------
405 dnl Endian-ness check
406 dnl -------------------------------
407 AC_WORDS_BIGENDIAN
408
409 dnl -------------------------------
410 dnl check the size in byte of the C
411 dnl -------------------------------
412 dnl AC_CHECK_SIZEOF(char)
413 dnl AC_CHECK_SIZEOF(int)
414 dnl AC_CHECK_SIZEOF(short)
415 dnl AC_CHECK_SIZEOF(long)
416
417 dnl ----------------------------
418 dnl check existance of functions
419 dnl ----------------------------
420 AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
421 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
422 fcntl)
423 AC_CHECK_FUNCS(setproctitle, ,
424 [AC_CHECK_LIB(util, setproctitle,
425 [LIBS="$LIBS -lutil"
426 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
427 ]
428 )
429 ]
430 )
431
432 dnl ------------------------------------
433 dnl Determine routing get and set method
434 dnl ------------------------------------
435 AC_MSG_CHECKING(zebra between kernel interface method)
436 if test x"$opsys" = x"gnu-linux"; then
437 if test "${enable_netlink}" = "yes";then
438 AC_MSG_RESULT(netlink)
439 RT_METHOD=rt_netlink.o
440 AC_DEFINE(HAVE_NETLINK,,netlink)
441 netlink=yes
442 elif test "${enable_netlink}" = "no"; then
443 AC_MSG_RESULT(ioctl)
444 RT_METHOD=rt_ioctl.o
445 netlink=no
446 else
447 AC_MSG_RESULT(netlink)
448 RT_METHOD=rt_netlink.o
449 AC_DEFINE(HAVE_NETLINK,,netlink)
450 netlink=yes
451 fi
452 elif test x"$opsys" = x"sol2-6";then
453 AC_MSG_RESULT(Route socket)
454 KERNEL_METHOD="kernel_socket.o"
455 RT_METHOD="rt_socket.o"
456 elif test x"$opsys" = x"sol9";then
457 AC_MSG_RESULT(Route socket)
458 KERNEL_METHOD="kernel_socket.o"
459 RT_METHOD="rt_socket.o"
460 elif test "$opsys" = "irix" ; then
461 AC_MSG_RESULT(Route socket)
462 KERNEL_METHOD="kernel_socket.o"
463 RT_METHOD="rt_socket.o"
464 else
465 AC_TRY_RUN([#include <errno.h>
466 #include <sys/types.h>
467 #include <sys/socket.h>
468
469 main ()
470 {
471 int ac_sock;
472
473 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
474 if (ac_sock < 0 && errno == EINVAL)
475 exit (1);
476 exit (0);
477 }],
478 [KERNEL_METHOD=kernel_socket.o
479 RT_METHOD=rt_socket.o
480 AC_MSG_RESULT(socket)],
481 [RT_METHOD=rt_ioctl.o
482 AC_MSG_RESULT(ioctl)],
483 [KERNEL_METHOD=kernel_socket.o
484 RT_METHOD=rt_socket.o
485 AC_MSG_RESULT(socket)])
486 fi
487 AC_SUBST(RT_METHOD)
488 AC_SUBST(KERNEL_METHOD)
489 AC_SUBST(OTHER_METHOD)
490
491 dnl ------------------------------
492 dnl check kernel route read method
493 dnl ------------------------------
494 AC_CACHE_CHECK(route read method check, zebra_rtread,
495 [if test "$netlink" = yes; then
496 RTREAD_METHOD="rtread_netlink.o"
497 zebra_rtread="netlink"
498 else
499 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
500 do
501 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
502 done
503 case $zebra_rtread in
504 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
505 zebra_rtread="proc";;
506 "/dev/ip")
507 case "$host" in
508 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
509 zebra_rtread="sysctl";;
510 *) RTREAD_METHOD="rtread_getmsg.o"
511 zebra_rtread="getmsg";;
512 esac;;
513 *) RTREAD_METHOD="rtread_sysctl.o"
514 zebra_rtread="sysctl";;
515 esac
516 fi])
517 AC_SUBST(RTREAD_METHOD)
518
519 dnl -----------------------------
520 dnl check interface lookup method
521 dnl -----------------------------
522 IOCTL_METHOD=ioctl.o
523 AC_MSG_CHECKING(interface looking up method)
524 if test "$netlink" = yes; then
525 AC_MSG_RESULT(netlink)
526 IF_METHOD=if_netlink.o
527 elif test "$opsys" = "sol2-6";then
528 AC_MSG_RESULT(Solaris GIF)
529 IF_METHOD=if_ioctl.o
530 elif test "$opsys" = "sol9";then
531 AC_MSG_RESULT(Solaris GLIF)
532 IF_METHOD=if_ioctl_solaris.o
533 IOCTL_METHOD=ioctl_solaris.o
534 elif test "$opsys" = "irix" ; then
535 AC_MSG_RESULT(IRIX)
536 IF_METHOD=if_ioctl.o
537 elif test "$opsys" = "openbsd";then
538 AC_MSG_RESULT(openbsd)
539 IF_METHOD=if_ioctl.o
540 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
541 AC_MSG_RESULT(sysctl)
542 IF_METHOD=if_sysctl.o
543 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
544 else
545 AC_MSG_RESULT(ioctl)
546 IF_METHOD=if_ioctl.o
547 fi
548 AC_SUBST(IF_METHOD)
549 AC_SUBST(IOCTL_METHOD)
550
551 dnl -----------------------
552 dnl check proc file system.
553 dnl -----------------------
554 if test -r /proc/net/dev; then
555 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
556 IF_PROC=if_proc.o
557 fi
558
559 if test -r /proc/net/if_inet6; then
560 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
561 IF_PROC=if_proc.o
562 fi
563 AC_SUBST(IF_PROC)
564
565 dnl -----------------------------
566 dnl check ipforward detect method
567 dnl -----------------------------
568 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
569 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
570 do
571 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
572 done
573 case $zebra_ipforward_path in
574 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
575 zebra_ipforward_path="proc";;
576 "/dev/ip")
577 case "$host" in
578 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
579 zebra_ipforward_path="ews";;
580 *-freebsd*) IPFORWARD=ipforward_sysctl.o
581 zebra_ipforward_path="sysctl";;
582 *) IPFORWARD=ipforward_solaris.o
583 zebra_ipforward_path="solaris";;
584 esac;;
585 *) IPFORWARD=ipforward_sysctl.o
586 zebra_ipforward_path="sysctl";;
587 esac])
588 AC_SUBST(IPFORWARD)
589
590 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
591
592 dnl ----------
593 dnl IPv6 check
594 dnl ----------
595 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
596 if test "${enable_ipv6}" = "no"; then
597 AC_MSG_RESULT(disabled)
598 else
599 dnl ----------
600 dnl INRIA IPv6
601 dnl ----------
602 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
603 zebra_cv_ipv6=yes
604 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
605 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
606 RIPNGD="ripngd"
607 OSPF6D="ospf6d"
608 LIB_IPV6=""
609 AC_MSG_RESULT(INRIA IPv6)
610 dnl ---------
611 dnl KAME IPv6
612 dnl ---------
613 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
614 zebra_cv_ipv6=yes
615 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
616 AC_DEFINE(KAME,1,KAME IPv6)
617 RIPNGD="ripngd"
618 OSPF6D="ospf6d"
619 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
620 LIB_IPV6="-L/usr/local/v6/lib -linet6"
621 fi
622 AC_MSG_RESULT(KAME)
623 dnl -------------------------
624 dnl MUSICA IPv6
625 dnl default host check
626 dnl It is not used by Kheops
627 dnl -------------------------
628 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
629 zebra_cv_ipv6=yes
630 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
631 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
632 AC_DEFINE(KAME,1,KAME IPv6 stack)
633 RIPNGD="ripngd"
634 OSPF6D="ospf6d"
635 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
636 LIB_IPV6="-L/usr/local/v6/lib -linet6"
637 fi
638 AC_MSG_RESULT(MUSICA)
639 dnl ---------
640 dnl NRL check
641 dnl ---------
642 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
643 zebra_cv_ipv6=yes
644 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
645 AC_DEFINE(NRL,1,NRL)
646 RIPNGD="ripngd"
647 OSPF6D="ospf6d"
648 if test x"$opsys" = x"bsdi";then
649 AC_DEFINE(BSDI_NRL,,BSDI)
650 AC_MSG_RESULT(BSDI_NRL)
651 else
652 AC_MSG_RESULT(NRL)
653 fi
654 dnl ------------------------------------
655 dnl Solaris 9, 10 and potentially higher
656 dnl ------------------------------------
657 elif test x"$opsys" = x"sol9"; then
658 zebra_cv_ipv6=yes;
659 AC_DEFINE(HAVE_IPV6, 1, IPv6)
660 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
661 RIPNGD="ripngd"
662 OSPF6D="ospf6d"
663 AC_MSG_RESULT(Solaris IPv6)
664 dnl ----------
665 dnl Linux IPv6
666 dnl ----------
667 elif test "${enable_ipv6}" = "yes"; then
668 AC_EGREP_CPP(yes, [
669 #include <linux/version.h>
670 /* 2.1.128 or later */
671 #if LINUX_VERSION_CODE >= 0x020180
672 yes
673 #endif],
674 [zebra_cv_ipv6=yes
675 zebra_cv_linux_ipv6=yes
676 AC_MSG_RESULT(Linux IPv6)])
677 else
678 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
679 then
680 zebra_cv_ipv6=yes
681 zebra_cv_linux_ipv6=yes
682 AC_MSG_RESULT(Linux IPv6)
683 fi
684 fi
685
686 if test "$zebra_cv_linux_ipv6" = "yes";then
687 AC_MSG_CHECKING(for GNU libc >= 2.1)
688 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
689 AC_EGREP_CPP(yes, [
690 #include <features.h>
691 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
692 yes
693 #endif],
694 [glibc=yes
695 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
696 AC_MSG_RESULT(yes)],
697 AC_MSG_RESULT(no)
698 )
699 RIPNGD="ripngd"
700 OSPF6D="ospf6d"
701 if test "$glibc" != "yes"; then
702 INCLUDES="-I/usr/inet6/include"
703 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
704 LIB_IPV6="-L/usr/inet6/lib -linet6"
705 fi
706 fi
707 fi
708
709 dnl -----------------------
710 dnl Set IPv6 related values
711 dnl -----------------------
712 LIBS="$LIB_IPV6 $LIBS"
713 AC_SUBST(LIB_IPV6)
714
715 if test x"$RIPNGD" = x""; then
716 AC_MSG_RESULT(IPv4 only)
717 fi
718 fi
719
720 dnl ------------------
721 dnl IPv6 header checks
722 dnl ------------------
723 if test "x${zebra_cv_ipv6}" = "xyes"; then
724 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
725 netinet6/in6_var.h netinet6/nd6.h])
726 fi
727
728 dnl --------------------
729 dnl Daemon disable check
730 dnl --------------------
731 if test "${enable_zebra}" = "no";then
732 ZEBRA=""
733 else
734 ZEBRA="zebra"
735 fi
736
737 if test "${enable_bgpd}" = "no";then
738 BGPD=""
739 else
740 BGPD="bgpd"
741 fi
742
743 if test "${enable_ripd}" = "no";then
744 RIPD=""
745 else
746 RIPD="ripd"
747 fi
748
749 if test "${enable_ospfd}" = "no";then
750 OSPFD=""
751 else
752 OSPFD="ospfd"
753 fi
754
755 if test "${enable_watchquagga}" = "no";then
756 WATCHQUAGGA=""
757 else
758 WATCHQUAGGA="watchquagga"
759 fi
760
761 OSPFCLIENT=""
762 if test "${enable_opaque_lsa}" = "yes"; then
763 if test "${enable_ospfapi}" != "no";then
764 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
765
766 if test "${enable_ospfclient}" != "no";then
767 OSPFCLIENT="ospfclient"
768 fi
769 fi
770
771 fi
772
773 case "${enable_ripngd}" in
774 "yes") RIPNGD="ripngd";;
775 "no" ) RIPNGD="";;
776 * ) ;;
777 esac
778
779 case "${enable_ospf6d}" in
780 "yes") OSPF6D="ospf6d";;
781 "no" ) OSPF6D="";;
782 * ) ;;
783 esac
784
785 case "${enable_isisd}" in
786 "yes") ISISD="isisd";;
787 "no" ) ISISD="";;
788 * ) ;;
789 esac
790
791 if test "${enable_bgp_announce}" = "no";then
792 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
793 fi
794
795 AC_SUBST(ZEBRA)
796 AC_SUBST(BGPD)
797 AC_SUBST(RIPD)
798 AC_SUBST(RIPNGD)
799 AC_SUBST(OSPFD)
800 AC_SUBST(OSPF6D)
801 AC_SUBST(WATCHQUAGGA)
802 AC_SUBST(ISISD)
803 AC_SUBST(VTYSH)
804 AC_SUBST(INCLUDES)
805 AC_SUBST(CURSES)
806 AC_SUBST(OSPFCLIENT)
807 AC_SUBST(OSPFAPI)
808 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
809 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
810 AC_CHECK_LIB(crypt, crypt)
811 AC_CHECK_LIB(resolv, res_init)
812 AC_CHECK_LIB(m, main)
813
814 dnl ---------------------------------------------------
815 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
816 dnl ---------------------------------------------------
817 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
818 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
819 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
820
821 dnl ---------------------------
822 dnl check system has GNU regexp
823 dnl ---------------------------
824 dnl AC_MSG_CHECKING(whether system has GNU regex)
825 AC_CHECK_LIB(c, regexec,
826 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
827 LIB_REGEX=""],
828 [LIB_REGEX="regex.o"])
829 AC_SUBST(LIB_REGEX)
830
831 dnl ------------------
832 dnl check SNMP library
833 dnl ------------------
834 if test "${enable_snmp}" = "yes";then
835 dnl AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
836 if test "${HAVE_SNMP}" = ""; then
837 old_libs="${LIBS}"
838 LIBS="-L/usr/lib"
839 unset ac_cv_lib_snmp_asn_parse_int
840 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
841 if test "${NEED_CRYPTO}" = ""; then
842 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes ])
843 else
844 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" ],,"-lcrypto")
845 fi
846 LIBS="${old_libs}"
847 fi
848 if test "${HAVE_SNMP}" = ""; then
849 old_libs="${LIBS}"
850 LIBS="-L/usr/lib"
851 unset ac_cv_lib_snmp_asn_parse_int
852 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes, )
853 if test "${HAVE_SNMP}" = ""; then
854 unset ac_cv_lib_snmp_asn_parse_int
855 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
856 if test "${NEED_CRYPTO}" = "yes"; then
857 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
858 fi
859 fi
860 LIBS="${old_libs}"
861 fi
862
863 if test "${HAVE_SNMP}" = ""; then
864 old_libs="${LIBS}"
865 LIBS="-L/usr/local/lib"
866 unset ac_cv_lib_snmp_asn_parse_int
867 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
868 if test "${HAVE_SNMP}" = ""; then
869 unset ac_cv_lib_snmp_asn_parse_int
870 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
871 if test "${NEED_CRYPTO}" = "yes"; then
872 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
873 fi
874 fi
875 LIBS="${old_libs}"
876 fi
877
878 if test "${HAVE_SNMP}" = "yes"; then
879 for ac_snmp in /usr/include/net-snmp/library/asn1.h /usr/include/ucd-snmp/asn1.h /usr/local/include/ucd-snmp/asn1.h /dev/null
880 do
881 test -f "${ac_snmp}" && break
882 done
883
884 case ${ac_snmp} in
885 /usr/include/net-snmp/*)
886 AC_DEFINE(HAVE_SNMP,,SNMP)
887 AC_DEFINE(HAVE_NETSNMP,,SNMP)
888 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
889 CFLAGS="${CFLAGS} -I/usr/include/net-snmp -I/usr/include/net-snmp/library"
890 if test "${HAVE_NETSNMP}" = "yes"; then
891 LIBS="${LIBS} -lnetsnmp"
892 else
893 LIBS="${LIBS} -lsnmp"
894 fi
895 ;;
896 /usr/include/ucd-snmp/*)
897 AC_DEFINE(HAVE_SNMP,,SNMP)
898 CFLAGS="${CFLAGS} -I/usr/include/ucd-snmp"
899 LIBS="${LIBS} -lsnmp"
900 ;;
901 /usr/local/include/ucd-snmp/*)
902 AC_DEFINE(HAVE_SNMP,,SNMP)
903 CFLAGS="${CFLAGS} -I/usr/local/include/ucd-snmp"
904 LIBS="${LIBS} -L/usr/local/lib -lsnmp"
905 ;;
906 /usr/local/include/net-snmp/*)
907 AC_DEFINE(HAVE_SNMP,,SNMP)
908 AC_DEFINE(HAVE_NET_SNMP,,SNMP)
909 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
910 CFLAGS="${CFLAGS} -I/usr/local/include/net-snmp"
911 LIBS="${LIBS} -L/usr/local/lib -lnetsnmp"
912 ;;
913 esac
914 if test "${NEED_CRYPTO}" = "yes"; then
915 LIBS="${LIBS} -lcrypto"
916 fi
917 fi
918 fi
919
920 dnl ----------------------------
921 dnl check sa_len of sockaddr
922 dnl ----------------------------
923 AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
924 AC_TRY_COMPILE([#include <sys/types.h>
925 #include <sys/socket.h>
926 ],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
927 [AC_MSG_RESULT(yes)
928 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
929 AC_MSG_RESULT(no))
930
931 dnl ----------------------------
932 dnl check sin_len of sockaddr_in
933 dnl ----------------------------
934 AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
935 AC_TRY_COMPILE([#include <sys/types.h>
936 #include <netinet/in.h>
937 ],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
938 [AC_MSG_RESULT(yes)
939 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
940 AC_MSG_RESULT(no))
941
942 dnl ----------------------------
943 dnl check sun_len of sockaddr_un
944 dnl ----------------------------
945 AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
946 AC_TRY_COMPILE([#include <sys/types.h>
947 #include <sys/un.h>
948 ],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
949 [AC_MSG_RESULT(yes)
950 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
951 AC_MSG_RESULT(no))
952
953 dnl -----------------------------------
954 dnl check sin6_scope_id of sockaddr_in6
955 dnl -----------------------------------
956 if test "$zebra_cv_ipv6" = yes; then
957 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
958 AC_TRY_COMPILE([#include <sys/types.h>
959 #include <netinet/in.h>
960 ],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
961 [AC_MSG_RESULT(yes)
962 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
963 AC_MSG_RESULT(no))
964 fi
965
966 dnl ----------------------------
967 dnl check socklen_t exist or not
968 dnl ----------------------------
969 AC_MSG_CHECKING(whther socklen_t is defined)
970 AC_TRY_COMPILE([#include <sys/types.h>
971 #include <sys/socket.h>
972 #include <netinet/in.h>
973 ],[socklen_t ac_x;],
974 [AC_MSG_RESULT(yes)
975 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
976 AC_MSG_RESULT(no))
977
978 dnl ------------------------
979 dnl check struct sockaddr_dl
980 dnl ------------------------
981 AC_MSG_CHECKING(whether struct sockaddr_dl exist)
982 AC_EGREP_HEADER(sockaddr_dl,
983 net/if_dl.h,
984 [AC_MSG_RESULT(yes)
985 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
986 AC_MSG_RESULT(no))
987
988 dnl --------------------------
989 dnl check structure ifaliasreq
990 dnl --------------------------
991 AC_MSG_CHECKING(whether struct ifaliasreq exist)
992 AC_EGREP_HEADER(ifaliasreq,
993 net/if.h,
994 [AC_MSG_RESULT(yes)
995 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
996 AC_MSG_RESULT(no))
997
998 dnl ----------------------------
999 dnl check structure in6_aliasreq
1000 dnl ----------------------------
1001 AC_MSG_CHECKING(whether struct in6_aliasreq exist)
1002 AC_EGREP_HEADER(in6_aliasreq,
1003 netinet6/in6_var.h,
1004 [AC_MSG_RESULT(yes)
1005 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1006 AC_MSG_RESULT(no))
1007
1008 dnl -----------------------------------
1009 dnl check ifra_lifetime of in6_aliasreq
1010 dnl -----------------------------------
1011 AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1012 AC_TRY_COMPILE([#include <sys/types.h>
1013 #include <netinet6/in6_var.h>
1014 ],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1015 [AC_MSG_RESULT(yes)
1016 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
1017 AC_MSG_RESULT(no))
1018
1019 dnl ---------------------------
1020 dnl check structure rt_addrinfo
1021 dnl ---------------------------
1022 AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1023 AC_EGREP_HEADER(rt_addrinfo,
1024 net/route.h,
1025 [AC_MSG_RESULT(yes)
1026 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1027 AC_MSG_RESULT(no))
1028
1029 dnl --------------------------
1030 dnl check structure in_pktinfo
1031 dnl --------------------------
1032 AC_MSG_CHECKING(whether struct in_pktinfo exist)
1033 AC_TRY_COMPILE([#include <netinet/in.h>
1034 ],[struct in_pktinfo ac_x;],
1035 [AC_MSG_RESULT(yes)
1036 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1037 AC_MSG_RESULT(no))
1038
1039 dnl --------------------------------------
1040 dnl checking for getrusage struct and call
1041 dnl --------------------------------------
1042 AC_MSG_CHECKING(whether getrusage is available)
1043 AC_TRY_COMPILE([#include <sys/resource.h>
1044 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1045 [AC_MSG_RESULT(yes)
1046 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1047 AC_MSG_RESULT(no))
1048
1049 dnl -------------------
1050 dnl capabilities checks
1051 dnl -------------------
1052 if test "${enable_capabilities}" != "no"; then
1053 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1054 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1055 [AC_MSG_RESULT(yes)
1056 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1057 quagga_ac_keepcaps="yes"],
1058 AC_MSG_RESULT(no)
1059 )
1060 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1061 AC_CHECK_HEADERS(sys/capability.h)
1062 fi
1063 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1064 AC_CHECK_LIB(cap, cap_init,
1065 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1066 LIBCAP="-lcap"
1067 ]
1068 )
1069 fi
1070 fi
1071 AC_SUBST(LIBCAP)
1072
1073 dnl ---------------------------
1074 dnl check for glibc 'backtrace'
1075 dnl ---------------------------
1076 if test "${glibc}" = "yes"; then
1077 AC_CHECK_HEADER(execinfo.h)
1078 fi
1079 if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1080 AC_CHECK_FUNC(backtrace,
1081 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1082 )
1083 fi
1084
1085 dnl ----------
1086 dnl configure date
1087 dnl ----------
1088 CONFDATE=`date '+%Y%m%d'`
1089 AC_SUBST(CONFDATE)
1090
1091 dnl ------------------------------
1092 dnl set paths for state directory
1093 dnl ------------------------------
1094 if test "${prefix}" = "NONE"; then
1095 quagga_statedir_prefix="";
1096 else
1097 quagga_statedir_prefix=${prefix}
1098 fi
1099 if test "${localstatedir}" = '${prefix}/var'; then
1100 AC_CACHE_CHECK(state directory,ac_statedir,
1101 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1102 ${quagga_statedir_prefix}/var/adm dnl
1103 ${quagga_statedir_prefix}/etc dnl
1104 /var/run dnl
1105 /var/adm dnl
1106 /etc dnl
1107 /dev/null;
1108 do
1109 test -d $QUAGGA_STATE_DIR && break
1110 done
1111 quagga_statedir=$QUAGGA_STATE_DIR])
1112 else
1113 quagga_statedir=${localstatedir}
1114 AC_MSG_CHECKING(directory to use for state file)
1115 AC_MSG_RESULT(${quagga_statedir})
1116 fi
1117 if test $quagga_statedir = "/dev/null"; then
1118 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1119 fi
1120
1121 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1122 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1123 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1124 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1125 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1126 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1127 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1128 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1129 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1130 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1131 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1132 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1133 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1134 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1135 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1136 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1137
1138 dnl ---------------------------
1139 dnl Check htonl works correctly
1140 dnl ---------------------------
1141 AC_MSG_CHECKING(for working htonl)
1142 AC_CACHE_VAL(ac_cv_htonl_works, [
1143 AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1144 #include <sys/types.h>
1145 #endif
1146 #ifdef HAVE_NETDB_H
1147 #include <netdb.h>
1148 #endif
1149 #ifdef HAVE_NETINET_IN_H
1150 #include <netinet/in.h>
1151 #endif],
1152 [htonl (0);],
1153 ac_cv_htonl_works=yes,
1154 ac_cv_htonl_works=no)])
1155 AC_MSG_RESULT($ac_cv_htonl_works)
1156
1157 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1158 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1159 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1160 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1161 pkgsrc/Makefile
1162 redhat/quagga.spec
1163 lib/version.h
1164 doc/defines.texi
1165 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1166 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1167 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1168 ## Hack, but working solution to avoid rebuilding of quagga.info.
1169 ## It's already in CVS until texinfo 4.7 is more common.
1170 AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
1171 AC_OUTPUT
1172
1173 echo "
1174 Quagga configuration
1175 --------------------
1176 quagga version : ${PACKAGE_VERSION}
1177 host operationg system : ${host_os}
1178 source code location : ${srcdir}
1179 compiler : ${CC}
1180 compiler flags : ${CFLAGS}
1181 linker flags : ${LDFLAGS} ${LIBS}
1182 state file directory : ${quagga_statedir}
1183 config file directory : `eval echo \`echo ${sysconfdir}\``
1184 example directory : `eval echo \`echo ${exampledir}\``
1185 user to run as : ${enable_user}
1186 group to run as : ${enable_group}
1187 group for vty sockets : ${enable_vty_group}
1188 config file mask : ${enable_configfile_mask}
1189 log file mask : ${enable_logfile_mask}
1190
1191 The above user and group must have read/write access to the state file
1192 directory and to the config files in the config file directory.
1193 "