2 ## Configure template file for Quagga.
3 ## autoconf will generate configure script.
5 ## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
6 ## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
8 ## $Id: configure.ac,v 1.108 2005/05/13 20:11:53 paul Exp $
11 AC_INIT(Quagga, 0.99.1, [http://bugzilla.quagga.net])
12 AC_CONFIG_SRCDIR(lib/zebra.h)
14 dnl -----------------------------------
15 dnl Get hostname and other information.
16 dnl -----------------------------------
22 AM_CONFIG_HEADER(config.h)
24 dnl we need gawk for memtypes.awk
25 AC_CHECK_PROG([GAWK],[gawk],[gawk],[/bin/false])
26 AC_ARG_VAR([GAWK],[GNU AWK])
28 dnl default is to match previous behavior
29 exampledir=${sysconfdir}
30 AC_ARG_ENABLE([exampledir],
31 AC_HELP_STRING([--enable-exampledir],
32 [specify alternate directory for examples]),
33 exampledir="$enableval",)
34 dnl XXX add --exampledir to autoconf standard directory list somehow
37 dnl default is to match previous behavior
40 AC_ARG_ENABLE([pkgsrcrcdir],
41 AC_HELP_STRING([--enable-pkgsrcrcdir],
42 [specify directory for rc.d scripts]),
43 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
44 dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
52 [ --with-cflags Set CFLAGS for use in compilation.])
53 if test "x$with_cflags" != "x" ; then
54 CFLAGS="$with_cflags" ; cflags_specified=yes ;
55 elif test -n "$CFLAGS" ; then
56 cflags_specified=yes ;
59 dnl --------------------
60 dnl Check CC and friends
61 dnl --------------------
66 dnl ------------------------------------------------------------------
67 dnl Intel compiler check. Although Intel tries really hard to make icc
68 dnl look like gcc, there are some differences. It's very verbose with
69 dnl -Wall and it doesn't support the individual -W options.
70 dnl ------------------------------------------------------------------
71 AC_MSG_CHECKING([whether we are using the Intel compiler])
72 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
79 dnl ---------------------------------------------
80 dnl If CLFAGS doesn\'t exist set default value
81 dnl AC_PROG_CC will have set minimal default
82 dnl already, eg "-O2 -g" for gcc, "-g" for others
83 dnl (Wall is gcc specific... have to make sure
84 dnl gcc is being used before setting it)
85 dnl Intel icc 8.0 also sets __GNUC__, but
86 dnl doesn't support all these fancy -W options.
87 dnl ---------------------------------------------
89 if test "x$cflags_specified" = "x" ; then
90 if test "x${GCC}" = "xyes" && test "x${ICC}" = "xno"; then
91 CFLAGS="-Os -g -Wall -Wsign-compare -Wpointer-arith"
92 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
94 # TODO: conditionally addd -Wpacked if handled
97 dnl ---------------------------------------------------------------------
98 dnl Intel compiler warnings we ignore:
99 dnl 279: controlling expression is constant.
100 dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
101 dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
103 dnl 981: operands are evaluated in unspecified order.
104 dnl ---------------------------------------------------------------------
106 if test "$ICC" = "yes"; then
107 CFLAGS="-Os -g -Wall -wd 279,869,981"
115 AC_CHECK_TOOL(AR, ar)
116 AC_CHECK_TOOL(RANLIB, ranlib, :)
128 dnl ----------------------
129 dnl Packages configuration
130 dnl ----------------------
132 [ --enable-vtysh include integrated vty shell for Quagga])
134 [ --disable-ipv6 turn off IPv6 related features and daemons])
136 [ --disable-zebra do not build zebra daemon])
138 [ --disable-bgpd do not build bgpd])
140 [ --disable-ripd do not build ripd])
141 AC_ARG_ENABLE(ripngd,
142 [ --disable-ripngd do not build ripngd])
144 [ --disable-ospfd do not build ospfd])
145 AC_ARG_ENABLE(ospf6d,
146 [ --disable-ospf6d do not build ospf6d])
147 AC_ARG_ENABLE(watchquagga,
148 [ --disable-watchquagga do not build watchquagga])
150 [ --enable-isisd build isisd])
151 AC_ARG_ENABLE(bgp-announce,
152 [ --disable-bgp-announce, turn off BGP route announcement])
153 AC_ARG_ENABLE(netlink,
154 [ --enable-netlink force to use Linux netlink interface])
155 AC_ARG_ENABLE(broken-aliases,
156 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
158 [ --enable-snmp enable SNMP support])
160 [ --with-libpam use libpam for PAM support in vtysh])
161 AC_ARG_ENABLE(tcp-zebra,
162 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
163 AC_ARG_ENABLE(opaque-lsa,
164 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
165 AC_ARG_ENABLE(ospfapi,
166 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
167 (this is the default if --enable-opaque-lsa is not set)])
168 AC_ARG_ENABLE(ospfclient,
169 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
170 (this is the default if --disable-ospfapi is set)])
171 AC_ARG_ENABLE(ospf-te,
172 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
173 AC_ARG_ENABLE(multipath,
174 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
175 AC_ARG_ENABLE(quagga_user,
176 [ --enable-user=ARG user to run Quagga suite as (default quagga)])
177 AC_ARG_ENABLE(quagga_group,
178 [ --enable-group=ARG group to run Quagga suite as (default quagga)])
179 AC_ARG_ENABLE(vty_group,
180 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
181 AC_ARG_ENABLE(configfile_mask,
182 [ --enable-configfile-mask=ARG set mask for config files])
183 AC_ARG_ENABLE(logfile_mask,
184 [ --enable-logfile-mask=ARG set mask for log files])
187 [ --disable-rtadv disable IPV6 router advertisement feature])
189 [ --enable-irdp enable IRDP server support in zebra])
190 AC_ARG_ENABLE(isis_topology,
191 [ --enable-isis-topology enable IS-IS topology generator])
192 AC_ARG_ENABLE(capabilities,
193 [ --disable-capabilities disable using POSIX capabilities])
194 AC_ARG_ENABLE(gcc_ultra_verbose,
195 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
196 AC_ARG_ENABLE(gcc-rdynamic,
197 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
198 AC_ARG_ENABLE(time-check,
199 [ --disable-time-check disable slow thread warning messages])
201 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
202 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
203 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
204 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
205 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
208 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
209 LDFLAGS="${LDFLAGS} -rdynamic"
212 if test x"${enable_time_check}" != x"no" ; then
213 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
214 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
216 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
220 if test "${enable_broken_aliases}" = "yes"; then
221 if test "${enable_netlink}" = "yes"
223 echo "Sorry, you can't use netlink with broken aliases"
226 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
230 if test "${enable_tcp_zebra}" = "yes"; then
231 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
234 if test "${enable_opaque_lsa}" = "yes"; then
235 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
238 if test "${enable_ospf_te}" = "yes"; then
239 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
240 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
243 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
244 if test "${enable_rtadv}" != "no"; then
246 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
251 if test "${enable_irdp}" = "yes"; then
252 AC_DEFINE(HAVE_IRDP,, IRDP )
255 if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
256 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
257 ISIS_TOPOLOGY_INCLUDES="-I./topology"
258 ISIS_TOPOLOGY_DIR="topology"
259 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
262 AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
263 AC_SUBST(ISIS_TOPOLOGY_DIR)
264 AC_SUBST(ISIS_TOPOLOGY_LIB)
266 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
268 elif test "${enable_user}" = "no"; then
272 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
273 enable_group="quagga"
274 elif test "${enable_group}" = "no"; then
278 if test x"${enable_vty_group}" = x"yes" ; then
279 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
280 elif test x"${enable_vty_group}" != x""; then
281 if test x"${enable_vty_group}" != x"no"; then
282 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
285 AC_SUBST([enable_user])
286 AC_SUBST([enable_group])
287 AC_SUBST([enable_vty_group])
288 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
289 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
291 enable_configfile_mask=${enable_configfile_mask:-0600}
292 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
294 enable_logfile_mask=${enable_logfile_mask:-0600}
295 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
301 case "${enable_multipath}" in
303 MULTIPATH_NUM="${enable_multipath}"
308 echo "Please specify digit to --enable-multipath ARG."
315 AC_SUBST(MULTIPATH_NUM)
317 dnl -------------------
318 dnl Check header files.
319 dnl -------------------
321 AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
322 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
323 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
324 sys/param.h libutil.h limits.h])
326 AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
327 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
328 net/if.h net/if_var.h netinet/in_var.h])
330 dnl V6 headers are checked below, after we check for v6
337 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
339 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
341 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
342 AC_DEFINE(SUNOS_5, 1, SunOS 5)
343 AC_CHECK_LIB(xnet, main)
347 | [*-sunos5.1[0-9]] \
348 | [*-sunos5.1[0-9].[0-9]] \
349 | [*-solaris2.[8-9]] \
350 | [*-solaris2.1[0-9]] \
351 | [*-solaris2.1[0-9].[0-9]])
353 AC_DEFINE(SUNOS_59,,SunOS 5.8 up)
354 AC_DEFINE(SUNOS_5, 1, SunOS 5)
355 AC_CHECK_LIB(socket, main)
356 AC_CHECK_LIB(nsl, main)
357 AC_CHECK_LIB(umem, main)
360 *-sunos5* | *-solaris2*)
361 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
362 AC_CHECK_LIB(socket, main)
363 AC_CHECK_LIB(nsl, main)
368 AC_DEFINE(GNU_LINUX,,GNU Linux)
371 AC_CHECK_LIB(nsl, gethostbyname)
372 AC_CHECK_LIB(socket, socket)
376 AC_DEFINE(OPEN_BSD,,OpenBSD)
380 OTHER_METHOD="mtu_kvm.o"
381 AC_CHECK_LIB(kvm, main)
385 AC_DEFINE(IRIX_65,,IRIX 6.5)
389 dnl ---------------------
390 dnl Integrated VTY option
391 dnl ---------------------
392 case "${enable_vtysh}" in
393 "yes") VTYSH="vtysh";
394 AC_DEFINE(VTYSH,,VTY shell)
395 AC_PATH_PROG(PERL, perl)
396 dnl Vtysh uses libreadline, which looks for termcap functions at
397 dnl configure time. We follow readline's search order.
398 dnl The required procedures are in libtermcap on NetBSD, in
399 dnl [TODO] on Linux, and in [TODO] on Solaris.
400 AC_CHECK_LIB(termcap, tputs, ,
401 AC_CHECK_LIB(tinfo, tputs, ,
402 AC_CHECK_LIB(curses, tputs, ,
403 AC_CHECK_LIB(ncurses, tputs))))
404 AC_CHECK_LIB(readline, main)
405 if test $ac_cv_lib_readline_main = no; then
406 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
408 AC_CHECK_HEADER(readline/history.h)
409 if test $ac_cv_header_readline_history_h = no;then
410 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
412 AC_CHECK_LIB(readline, rl_completion_matches)
413 if test $ac_cv_lib_readline_rl_completion_matches = no; then
414 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
424 if test "$with_libpam" = "yes"; then
425 AC_CHECK_HEADER(security/pam_misc.h)
426 if test "$ac_cv_header_security_pam_misc_h" = yes; then
427 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
428 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
429 pam_conv_func="misc_conv"
431 AC_CHECK_HEADER(security/openpam.h)
432 if test "$ac_cv_header_security_openpam_h" = yes; then
433 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
434 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
435 pam_conv_func="openpam_ttyconv"
437 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
438 AC_MSG_WARN([*** pam support will not be built ***])
443 if test "$with_libpam" = "yes"; then
444 dnl took this test from proftpd's configure.in and suited to our needs
445 dnl -------------------------------------------------------------------------
447 dnl This next check looks funky due to a linker problem with some versions
448 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
449 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
450 dnl with RedHat 6.2 and Debian 2.2 or better.
451 AC_CHECK_LIB(pam, pam_start,
452 [AC_CHECK_LIB(pam, $pam_conv_func,
453 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
455 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
456 LIBPAM="-lpam -lpam_misc"]
460 [AC_CHECK_LIB(pam, pam_end,
461 [AC_CHECK_LIB(pam, $pam_conv_func,
462 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
463 LIBPAM="-lpam -ldl"],
464 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
465 LIBPAM="-lpam -ldl -lpam_misc"]
467 ],AC_MSG_WARN([*** pam support will not be built ***]),
474 dnl -------------------------------
475 dnl Endian-ness check
476 dnl -------------------------------
479 dnl -------------------------------
480 dnl check the size in byte of the C
481 dnl -------------------------------
482 dnl AC_CHECK_SIZEOF(char)
483 dnl AC_CHECK_SIZEOF(int)
484 dnl AC_CHECK_SIZEOF(short)
485 dnl AC_CHECK_SIZEOF(long)
487 dnl ----------------------------
488 dnl check existance of functions
489 dnl ----------------------------
490 AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
491 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
493 AC_CHECK_FUNCS(setproctitle, ,
494 [AC_CHECK_LIB(util, setproctitle,
496 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
502 dnl ------------------------------------
503 dnl Determine routing get and set method
504 dnl ------------------------------------
505 AC_MSG_CHECKING(zebra between kernel interface method)
506 if test x"$opsys" = x"gnu-linux"; then
507 if test "${enable_netlink}" = "yes";then
508 AC_MSG_RESULT(netlink)
509 RT_METHOD=rt_netlink.o
510 AC_DEFINE(HAVE_NETLINK,,netlink)
512 elif test "${enable_netlink}" = "no"; then
517 AC_MSG_RESULT(netlink)
518 RT_METHOD=rt_netlink.o
519 AC_DEFINE(HAVE_NETLINK,,netlink)
522 elif test x"$opsys" = x"sol2-6";then
523 AC_MSG_RESULT(Route socket)
524 KERNEL_METHOD="kernel_socket.o"
525 RT_METHOD="rt_socket.o"
526 elif test x"$opsys" = x"sol8";then
527 AC_MSG_RESULT(Route socket)
528 KERNEL_METHOD="kernel_socket.o"
529 RT_METHOD="rt_socket.o"
530 elif test "$opsys" = "irix" ; then
531 AC_MSG_RESULT(Route socket)
532 KERNEL_METHOD="kernel_socket.o"
533 RT_METHOD="rt_socket.o"
535 AC_TRY_RUN([#include <errno.h>
536 #include <sys/types.h>
537 #include <sys/socket.h>
543 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
544 if (ac_sock < 0 && errno == EINVAL)
548 [KERNEL_METHOD=kernel_socket.o
549 RT_METHOD=rt_socket.o
550 AC_MSG_RESULT(socket)],
551 [RT_METHOD=rt_ioctl.o
552 AC_MSG_RESULT(ioctl)],
553 [KERNEL_METHOD=kernel_socket.o
554 RT_METHOD=rt_socket.o
555 AC_MSG_RESULT(socket)])
558 AC_SUBST(KERNEL_METHOD)
559 AC_SUBST(OTHER_METHOD)
561 dnl ------------------------------------
562 dnl check for broken CMSG_FIRSTHDR macro
563 dnl ------------------------------------
564 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
565 AC_RUN_IFELSE([AC_LANG_SOURCE([[
568 #define __EXTENSIONS__
571 #include <sys/types.h>
572 #include <sys/socket.h>
579 msg.msg_control = buf;
580 msg.msg_controllen = 0;
582 if (CMSG_FIRSTHDR(&msg) != NULL)
585 }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
586 [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
588 dnl ------------------------------
589 dnl check kernel route read method
590 dnl ------------------------------
591 AC_CACHE_CHECK(route read method check, zebra_rtread,
592 [if test "$netlink" = yes; then
593 RTREAD_METHOD="rtread_netlink.o"
594 zebra_rtread="netlink"
596 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
598 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
600 case $zebra_rtread in
601 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
602 zebra_rtread="proc";;
605 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
606 zebra_rtread="sysctl";;
607 *) RTREAD_METHOD="rtread_getmsg.o"
608 zebra_rtread="getmsg";;
610 *) RTREAD_METHOD="rtread_sysctl.o"
611 zebra_rtread="sysctl";;
614 AC_SUBST(RTREAD_METHOD)
616 dnl -----------------------------
617 dnl check interface lookup method
618 dnl -----------------------------
620 AC_MSG_CHECKING(interface looking up method)
621 if test "$netlink" = yes; then
622 AC_MSG_RESULT(netlink)
623 IF_METHOD=if_netlink.o
624 elif test "$opsys" = "sol2-6";then
625 AC_MSG_RESULT(Solaris GIF)
627 elif test "$opsys" = "sol8";then
628 AC_MSG_RESULT(Solaris GLIF)
629 IF_METHOD=if_ioctl_solaris.o
630 IOCTL_METHOD=ioctl_solaris.o
631 elif test "$opsys" = "irix" ; then
634 elif test "$opsys" = "openbsd";then
635 AC_MSG_RESULT(openbsd)
637 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
638 AC_MSG_RESULT(sysctl)
639 IF_METHOD=if_sysctl.o
640 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
646 AC_SUBST(IOCTL_METHOD)
648 dnl ---------------------------------------------------------------
649 dnl figure out how to specify an interface in multicast sockets API
650 dnl ---------------------------------------------------------------
651 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
652 #include <sys/types.h>
654 #ifdef HAVE_NETINET_IN_H
655 #include <netinet/in.h>
658 AC_MSG_CHECKING([for BSD struct ip_mreq hack])
659 AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
660 #include <sys/param.h>
661 #endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
664 #error No support for BSD struct ip_mreq hack detected
665 #endif],[AC_MSG_RESULT(yes)
666 AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
669 dnl -----------------------
670 dnl check proc file system.
671 dnl -----------------------
672 if test -r /proc/net/dev; then
673 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
677 if test -r /proc/net/if_inet6; then
678 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
683 dnl -----------------------------
684 dnl check ipforward detect method
685 dnl -----------------------------
686 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
687 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
689 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
691 case $zebra_ipforward_path in
692 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
693 zebra_ipforward_path="proc";;
696 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
697 zebra_ipforward_path="ews";;
698 *-freebsd*) IPFORWARD=ipforward_sysctl.o
699 zebra_ipforward_path="sysctl";;
700 *) IPFORWARD=ipforward_solaris.o
701 zebra_ipforward_path="solaris";;
703 *) IPFORWARD=ipforward_sysctl.o
704 zebra_ipforward_path="sysctl";;
708 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
713 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
714 if test "${enable_ipv6}" = "no"; then
715 AC_MSG_RESULT(disabled)
720 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
722 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
723 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
727 AC_MSG_RESULT(INRIA IPv6)
731 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
733 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
734 AC_DEFINE(KAME,1,KAME IPv6)
737 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
738 LIB_IPV6="-L/usr/local/v6/lib -linet6"
741 dnl -------------------------
743 dnl default host check
744 dnl It is not used by Kheops
745 dnl -------------------------
746 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
748 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
749 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
750 AC_DEFINE(KAME,1,KAME IPv6 stack)
753 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
754 LIB_IPV6="-L/usr/local/v6/lib -linet6"
756 AC_MSG_RESULT(MUSICA)
760 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
762 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
766 if test x"$opsys" = x"bsdi";then
767 AC_DEFINE(BSDI_NRL,,BSDI)
768 AC_MSG_RESULT(BSDI_NRL)
772 dnl ------------------------------------
773 dnl Solaris 9, 10 and potentially higher
774 dnl ------------------------------------
775 elif test x"$opsys" = x"sol8"; then
777 AC_DEFINE(HAVE_IPV6, 1, IPv6)
778 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
781 AC_MSG_RESULT(Solaris IPv6)
785 elif test "${enable_ipv6}" = "yes"; then
787 #include <linux/version.h>
788 /* 2.1.128 or later */
789 #if LINUX_VERSION_CODE >= 0x020180
793 zebra_cv_linux_ipv6=yes
794 AC_MSG_RESULT(Linux IPv6)])
796 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
799 zebra_cv_linux_ipv6=yes
800 AC_MSG_RESULT(Linux IPv6)
804 if test "$zebra_cv_linux_ipv6" = "yes";then
805 AC_MSG_CHECKING(for GNU libc >= 2.1)
806 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
808 #include <features.h>
809 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
813 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
819 if test "$glibc" != "yes"; then
820 INCLUDES="-I/usr/inet6/include"
821 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
822 LIB_IPV6="-L/usr/inet6/lib -linet6"
827 dnl -----------------------
828 dnl Set IPv6 related values
829 dnl -----------------------
830 LIBS="$LIB_IPV6 $LIBS"
833 if test x"$RIPNGD" = x""; then
834 AC_MSG_RESULT(IPv4 only)
838 dnl ------------------
839 dnl IPv6 header checks
840 dnl ------------------
841 if test "x${zebra_cv_ipv6}" = "xyes"; then
842 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
843 netinet6/in6_var.h netinet6/nd6.h])
846 dnl --------------------
847 dnl Daemon disable check
848 dnl --------------------
849 if test "${enable_zebra}" = "no";then
855 if test "${enable_bgpd}" = "no";then
861 if test "${enable_ripd}" = "no";then
867 if test "${enable_ospfd}" = "no";then
873 if test "${enable_watchquagga}" = "no";then
876 WATCHQUAGGA="watchquagga"
880 if test "${enable_opaque_lsa}" = "yes"; then
881 if test "${enable_ospfapi}" != "no";then
882 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
884 if test "${enable_ospfclient}" != "no";then
885 OSPFCLIENT="ospfclient"
891 case "${enable_ripngd}" in
892 "yes") RIPNGD="ripngd";;
897 case "${enable_ospf6d}" in
898 "yes") OSPF6D="ospf6d";;
903 case "${enable_isisd}" in
904 "yes") ISISD="isisd";;
909 if test "${enable_bgp_announce}" = "no";then
910 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
919 AC_SUBST(WATCHQUAGGA)
926 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
927 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
928 AC_CHECK_LIB(crypt, crypt)
929 AC_CHECK_LIB(resolv, res_init)
930 AC_CHECK_LIB(m, main)
932 dnl ---------------------------------------------------
933 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
934 dnl ---------------------------------------------------
935 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
936 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
937 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
939 dnl ---------------------------
940 dnl check system has GNU regexp
941 dnl ---------------------------
942 dnl AC_MSG_CHECKING(whether system has GNU regex)
943 AC_CHECK_LIB(c, regexec,
944 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
946 [LIB_REGEX="regex.o"])
949 dnl ------------------
950 dnl check SNMP library
951 dnl ------------------
952 if test "${enable_snmp}" = "yes";then
953 dnl AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
954 if test "${HAVE_SNMP}" = ""; then
957 unset ac_cv_lib_snmp_asn_parse_int
958 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
959 if test "${NEED_CRYPTO}" = ""; then
960 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes ])
962 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" ],,"-lcrypto")
966 if test "${HAVE_SNMP}" = ""; then
969 unset ac_cv_lib_snmp_asn_parse_int
970 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes, )
971 if test "${HAVE_SNMP}" = ""; then
972 unset ac_cv_lib_snmp_asn_parse_int
973 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
974 if test "${NEED_CRYPTO}" = "yes"; then
975 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
981 if test "${HAVE_SNMP}" = ""; then
983 LIBS="-L/usr/local/lib"
984 unset ac_cv_lib_snmp_asn_parse_int
985 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
986 if test "${HAVE_SNMP}" = ""; then
987 unset ac_cv_lib_snmp_asn_parse_int
988 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
989 if test "${NEED_CRYPTO}" = "yes"; then
990 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
996 if test "${HAVE_SNMP}" = "yes"; then
997 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
999 test -f "${ac_snmp}" && break
1003 /usr/include/net-snmp/*)
1004 AC_DEFINE(HAVE_SNMP,,SNMP)
1005 AC_DEFINE(HAVE_NETSNMP,,SNMP)
1006 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
1007 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/include/net-snmp -I/usr/include/net-snmp/library"
1008 if test "${HAVE_NETSNMP}" = "yes"; then
1009 LIBS="${LIBS} -lnetsnmp"
1011 LIBS="${LIBS} -lsnmp"
1014 /usr/include/ucd-snmp/*)
1015 AC_DEFINE(HAVE_SNMP,,SNMP)
1016 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/include/ucd-snmp"
1017 LIBS="${LIBS} -lsnmp"
1019 /usr/local/include/ucd-snmp/*)
1020 AC_DEFINE(HAVE_SNMP,,SNMP)
1021 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/local/include/ucd-snmp"
1022 LIBS="${LIBS} -L/usr/local/lib -lsnmp"
1024 /usr/local/include/net-snmp/*)
1025 AC_DEFINE(HAVE_SNMP,,SNMP)
1026 AC_DEFINE(HAVE_NET_SNMP,,SNMP)
1027 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
1028 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/local/include/net-snmp"
1029 LIBS="${LIBS} -L/usr/local/lib -lnetsnmp"
1032 if test "${NEED_CRYPTO}" = "yes"; then
1033 LIBS="${LIBS} -lcrypto"
1038 if test "${enable_snmp}" = "yes" -a "${HAVE_SNMP}" != "yes"; then
1039 AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])
1042 AC_SUBST(SNMP_INCLUDES)
1044 dnl ----------------------------
1045 dnl check sa_len of sockaddr
1046 dnl ----------------------------
1047 AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1048 AC_TRY_COMPILE([#include <sys/types.h>
1049 #include <sys/socket.h>
1050 ],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1052 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1055 dnl ----------------------------
1056 dnl check sin_len of sockaddr_in
1057 dnl ----------------------------
1058 AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1059 AC_TRY_COMPILE([#include <sys/types.h>
1060 #include <netinet/in.h>
1061 ],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1063 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1066 dnl ----------------------------
1067 dnl check sun_len of sockaddr_un
1068 dnl ----------------------------
1069 AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1070 AC_TRY_COMPILE([#include <sys/types.h>
1072 ],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1074 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1077 dnl -----------------------------------
1078 dnl check sin6_scope_id of sockaddr_in6
1079 dnl -----------------------------------
1080 if test "$zebra_cv_ipv6" = yes; then
1081 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1082 AC_TRY_COMPILE([#include <sys/types.h>
1083 #include <netinet/in.h>
1084 ],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1086 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1090 dnl ----------------------------
1091 dnl check socklen_t exist or not
1092 dnl ----------------------------
1093 AC_MSG_CHECKING(whther socklen_t is defined)
1094 AC_TRY_COMPILE([#include <sys/types.h>
1095 #include <sys/socket.h>
1096 #include <netinet/in.h>
1097 ],[socklen_t ac_x;],
1099 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1102 dnl ------------------------
1103 dnl check struct sockaddr_dl
1104 dnl ------------------------
1105 AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1106 AC_EGREP_HEADER(sockaddr_dl,
1109 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1112 dnl --------------------------
1113 dnl check structure ifaliasreq
1114 dnl --------------------------
1115 AC_MSG_CHECKING(whether struct ifaliasreq exist)
1116 AC_EGREP_HEADER(ifaliasreq,
1119 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1122 dnl ----------------------------
1123 dnl check structure in6_aliasreq
1124 dnl ----------------------------
1125 AC_MSG_CHECKING(whether struct in6_aliasreq exist)
1126 AC_EGREP_HEADER(in6_aliasreq,
1129 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1132 dnl -----------------------------------
1133 dnl check ifra_lifetime of in6_aliasreq
1134 dnl -----------------------------------
1135 AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1136 AC_TRY_COMPILE([#include <sys/types.h>
1137 #include <netinet6/in6_var.h>
1138 ],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1140 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
1143 dnl ---------------------------
1144 dnl check structure rt_addrinfo
1145 dnl ---------------------------
1146 AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1147 AC_EGREP_HEADER(rt_addrinfo,
1150 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1153 dnl --------------------------
1154 dnl check structure in_pktinfo
1155 dnl --------------------------
1156 AC_MSG_CHECKING(whether struct in_pktinfo exist)
1157 AC_TRY_COMPILE([#include <netinet/in.h>
1158 ],[struct in_pktinfo ac_x;],
1160 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1163 dnl ----------------------------------
1164 dnl check struct nd_opt_homeagent_info
1165 dnl ----------------------------------
1166 AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1167 AC_EGREP_HEADER(nd_opt_homeagent_info,
1170 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1173 dnl --------------------------------
1174 dnl check struct nd_opt_adv_interval
1175 dnl --------------------------------
1176 AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1177 AC_EGREP_HEADER(nd_opt_adv_interval,
1180 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1183 dnl ------------------------------------
1184 dnl check fields in nd_opt_adv_interval
1185 dnl ------------------------------------
1186 AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1187 AC_EGREP_HEADER(nd_opt_ai_type,
1190 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1193 dnl --------------------------------------
1194 dnl checking for getrusage struct and call
1195 dnl --------------------------------------
1196 AC_MSG_CHECKING(whether getrusage is available)
1197 AC_TRY_COMPILE([#include <sys/resource.h>
1198 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1200 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1203 dnl -------------------
1204 dnl capabilities checks
1205 dnl -------------------
1206 if test "${enable_capabilities}" != "no"; then
1207 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1208 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1210 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1211 quagga_ac_keepcaps="yes"],
1214 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1215 AC_CHECK_HEADERS(sys/capability.h)
1217 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1218 AC_CHECK_LIB(cap, cap_init,
1219 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1227 dnl -------------------
1228 dnl test for ucontext.h
1229 dnl -------------------
1230 AC_CHECK_HEADERS(ucontext.h)
1232 dnl ---------------------------
1233 dnl check for glibc 'backtrace'
1234 dnl ---------------------------
1235 if test "${glibc}" = "yes"; then
1236 AC_CHECK_HEADER(execinfo.h)
1238 if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1239 AC_CHECK_FUNC(backtrace,
1240 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1247 CONFDATE=`date '+%Y%m%d'`
1250 dnl ------------------------------
1251 dnl set paths for state directory
1252 dnl ------------------------------
1253 if test "${prefix}" = "NONE"; then
1254 quagga_statedir_prefix="";
1256 quagga_statedir_prefix=${prefix}
1258 if test "${localstatedir}" = '${prefix}/var'; then
1259 AC_CACHE_CHECK(state directory,ac_statedir,
1260 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1261 ${quagga_statedir_prefix}/var/adm dnl
1262 ${quagga_statedir_prefix}/etc dnl
1268 test -d $QUAGGA_STATE_DIR && break
1270 quagga_statedir=$QUAGGA_STATE_DIR])
1272 quagga_statedir=${localstatedir}
1273 AC_MSG_CHECKING(directory to use for state file)
1274 AC_MSG_RESULT(${quagga_statedir})
1275 AC_SUBST(quagga_statedir)
1277 if test $quagga_statedir = "/dev/null"; then
1278 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1281 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1282 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1283 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1284 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1285 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1286 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1287 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1288 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1289 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1290 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1291 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1292 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1293 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1294 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1295 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1296 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1297 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1299 dnl -------------------------------
1300 dnl Quagga sources should always be
1301 dnl current wrt interfaces. Dont
1302 dnl allow deprecated interfaces to
1304 dnl -------------------------------
1305 AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1307 dnl ---------------------------
1308 dnl Check htonl works correctly
1309 dnl ---------------------------
1310 AC_MSG_CHECKING(for working htonl)
1311 AC_CACHE_VAL(ac_cv_htonl_works, [
1312 AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1313 #include <sys/types.h>
1318 #ifdef HAVE_NETINET_IN_H
1319 #include <netinet/in.h>
1322 ac_cv_htonl_works=yes,
1323 ac_cv_htonl_works=no)])
1324 AC_MSG_RESULT($ac_cv_htonl_works)
1326 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1327 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1328 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1329 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1334 isisd/topology/Makefile
1335 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1336 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1337 AC_CONFIG_FILES([solaris/Makefile])
1339 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1340 ## Hack, but working solution to avoid rebuilding of quagga.info.
1341 ## It's already in CVS until texinfo 4.7 is more common.
1342 AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
1346 Quagga configuration
1347 --------------------
1348 quagga version : ${PACKAGE_VERSION}
1349 host operationg system : ${host_os}
1350 source code location : ${srcdir}
1352 compiler flags : ${CFLAGS}
1353 includes : ${INCLUDES} ${SNMP_INCLUDES}
1354 linker flags : ${LDFLAGS} ${LIBS}
1355 state file directory : ${quagga_statedir}
1356 config file directory : `eval echo \`echo ${sysconfdir}\``
1357 example directory : `eval echo \`echo ${exampledir}\``
1358 user to run as : ${enable_user}
1359 group to run as : ${enable_group}
1360 group for vty sockets : ${enable_vty_group}
1361 config file mask : ${enable_configfile_mask}
1362 log file mask : ${enable_logfile_mask}
1364 The above user and group must have read/write access to the state file
1365 directory and to the config files in the config file directory.