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.118 2006/01/31 10:09:27 paul Exp $
11 AC_INIT(Quagga, 0.99.3, [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 if test "x${GCC}" = "xyes" ; then
73 AC_MSG_CHECKING([whether we are using the Intel compiler])
74 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
75 [AC_MSG_RESULT([no])],
80 AC_MSG_CHECKING([whether we are using SunPro compiler])
81 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
82 [AC_MSG_RESULT([no])],
88 dnl ---------------------------------------------
89 dnl If CLFAGS doesn\'t exist set default value
90 dnl AC_PROG_CC will have set minimal default
91 dnl already, eg "-O2 -g" for gcc, "-g" for others
92 dnl (Wall is gcc specific... have to make sure
93 dnl gcc is being used before setting it)
95 dnl Intel icc 8.0 also sets __GNUC__,
96 dnl but doesn't support all these fancy -W options.
97 dnl Intel compiler warnings we ignore:
98 dnl 279: controlling expression is constant.
99 dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
100 dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
102 dnl 981: operands are evaluated in unspecified order.
104 dnl Sun Studio 10 / SunPro 5.7 is also supported,
105 dnl so lets set some sane CFLAGS for it.
106 dnl ---------------------------------------------
108 AC_MSG_CHECKING([whether to set a default CFLAGS])
109 if test "x${cflags_specified}" = "x" ; then
112 CFLAGS="-Os -g -Wall -wd 279,869,981"
113 AC_MSG_RESULT([Intel default])
116 CFLAGS="-Os -fno-omit-frame-pointer -g -std=c99 -Wall"
117 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
118 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
119 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
120 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
121 # TODO: conditionally addd -Wpacked if handled
122 AC_MSG_RESULT([gcc default])
125 CFLAGS="-xO4 -xspace -xcode=pic32 -xstrconst -Xt -xc99"
126 AC_MSG_RESULT([SunPro default])
129 AC_MSG_RESULT([unknown compiler])
133 AC_MSG_RESULT([CFLAGS supplied by user])
141 AC_CHECK_TOOL(AR, ar)
142 AC_CHECK_TOOL(RANLIB, ranlib, :)
154 dnl ----------------------
155 dnl Packages configuration
156 dnl ----------------------
158 [ --enable-vtysh include integrated vty shell for Quagga])
160 [ --disable-ipv6 turn off IPv6 related features and daemons])
162 [ --disable-zebra do not build zebra daemon])
164 [ --disable-bgpd do not build bgpd])
166 [ --disable-ripd do not build ripd])
167 AC_ARG_ENABLE(ripngd,
168 [ --disable-ripngd do not build ripngd])
170 [ --disable-ospfd do not build ospfd])
171 AC_ARG_ENABLE(ospf6d,
172 [ --disable-ospf6d do not build ospf6d])
173 AC_ARG_ENABLE(watchquagga,
174 [ --disable-watchquagga do not build watchquagga])
176 [ --enable-isisd build isisd])
177 AC_ARG_ENABLE(bgp-announce,
178 [ --disable-bgp-announce, turn off BGP route announcement])
179 AC_ARG_ENABLE(netlink,
180 [ --enable-netlink force to use Linux netlink interface])
181 AC_ARG_ENABLE(broken-aliases,
182 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
184 [ --enable-snmp enable SNMP support])
186 [ --with-libpam use libpam for PAM support in vtysh])
187 AC_ARG_ENABLE(tcp-zebra,
188 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
189 AC_ARG_ENABLE(opaque-lsa,
190 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
191 AC_ARG_ENABLE(ospfapi,
192 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
193 (this is the default if --enable-opaque-lsa is not set)])
194 AC_ARG_ENABLE(ospfclient,
195 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
196 (this is the default if --disable-ospfapi is set)])
197 AC_ARG_ENABLE(ospf-te,
198 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
199 AC_ARG_ENABLE(multipath,
200 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
201 AC_ARG_ENABLE(quagga_user,
202 [ --enable-user=ARG user to run Quagga suite as (default quagga)])
203 AC_ARG_ENABLE(quagga_group,
204 [ --enable-group=ARG group to run Quagga suite as (default quagga)])
205 AC_ARG_ENABLE(vty_group,
206 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
207 AC_ARG_ENABLE(configfile_mask,
208 [ --enable-configfile-mask=ARG set mask for config files])
209 AC_ARG_ENABLE(logfile_mask,
210 [ --enable-logfile-mask=ARG set mask for log files])
213 [ --disable-rtadv disable IPV6 router advertisement feature])
215 [ --enable-irdp enable IRDP server support in zebra])
216 AC_ARG_ENABLE(isis_topology,
217 [ --enable-isis-topology enable IS-IS topology generator])
218 AC_ARG_ENABLE(capabilities,
219 [ --disable-capabilities disable using POSIX capabilities])
220 AC_ARG_ENABLE(gcc_ultra_verbose,
221 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
222 AC_ARG_ENABLE(gcc-rdynamic,
223 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
224 AC_ARG_ENABLE(time-check,
225 [ --disable-time-check disable slow thread warning messages])
227 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
228 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
229 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
230 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
231 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
234 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
235 LDFLAGS="${LDFLAGS} -rdynamic"
238 if test x"${enable_time_check}" != x"no" ; then
239 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
240 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
242 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
246 if test "${enable_broken_aliases}" = "yes"; then
247 if test "${enable_netlink}" = "yes"
249 echo "Sorry, you can't use netlink with broken aliases"
252 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
256 if test "${enable_tcp_zebra}" = "yes"; then
257 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
260 if test "${enable_opaque_lsa}" = "yes"; then
261 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
264 if test "${enable_ospf_te}" = "yes"; then
265 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
266 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
269 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
270 if test "${enable_rtadv}" != "no"; then
272 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
277 if test "${enable_irdp}" = "yes"; then
278 AC_DEFINE(HAVE_IRDP,, IRDP )
281 if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
282 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
283 ISIS_TOPOLOGY_INCLUDES="-I./topology"
284 ISIS_TOPOLOGY_DIR="topology"
285 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
288 AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
289 AC_SUBST(ISIS_TOPOLOGY_DIR)
290 AC_SUBST(ISIS_TOPOLOGY_LIB)
292 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
294 elif test "${enable_user}" = "no"; then
298 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
299 enable_group="quagga"
300 elif test "${enable_group}" = "no"; then
304 if test x"${enable_vty_group}" = x"yes" ; then
305 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
306 elif test x"${enable_vty_group}" != x""; then
307 if test x"${enable_vty_group}" != x"no"; then
308 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
311 AC_SUBST([enable_user])
312 AC_SUBST([enable_group])
313 AC_SUBST([enable_vty_group])
314 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
315 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
317 enable_configfile_mask=${enable_configfile_mask:-0600}
318 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
320 enable_logfile_mask=${enable_logfile_mask:-0600}
321 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
327 case "${enable_multipath}" in
329 MULTIPATH_NUM="${enable_multipath}"
334 echo "Please specify digit to --enable-multipath ARG."
341 AC_SUBST(MULTIPATH_NUM)
343 dnl -------------------
344 dnl Check header files.
345 dnl -------------------
347 AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
348 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
349 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
350 sys/param.h libutil.h limits.h stdint.h])
352 AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
353 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
354 net/if.h net/if_var.h netinet/in_var.h])
356 dnl V6 headers are checked below, after we check for v6
363 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
365 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
367 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
368 AC_DEFINE(SUNOS_5, 1, SunOS 5)
369 AC_CHECK_LIB(xnet, main)
373 | [*-sunos5.1[0-9]] \
374 | [*-sunos5.1[0-9].[0-9]] \
375 | [*-solaris2.[8-9]] \
376 | [*-solaris2.1[0-9]] \
377 | [*-solaris2.1[0-9].[0-9]])
379 AC_DEFINE(SUNOS_59,,SunOS 5.8 up)
380 AC_DEFINE(SUNOS_5, 1, SunOS 5)
381 AC_CHECK_LIB(socket, main)
382 AC_CHECK_LIB(nsl, main)
383 AC_CHECK_LIB(umem, main)
386 *-sunos5* | *-solaris2*)
387 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
388 AC_CHECK_LIB(socket, main)
389 AC_CHECK_LIB(nsl, main)
394 AC_DEFINE(GNU_LINUX,,GNU Linux)
397 AC_CHECK_LIB(nsl, gethostbyname)
398 AC_CHECK_LIB(socket, socket)
402 AC_DEFINE(OPEN_BSD,,OpenBSD)
406 OTHER_METHOD="mtu_kvm.o"
407 AC_CHECK_LIB(kvm, main)
411 AC_DEFINE(IRIX_65,,IRIX 6.5)
415 dnl ---------------------
416 dnl Integrated VTY option
417 dnl ---------------------
418 case "${enable_vtysh}" in
419 "yes") VTYSH="vtysh";
420 AC_DEFINE(VTYSH,,VTY shell)
421 AC_PATH_PROG(PERL, perl)
422 dnl Vtysh uses libreadline, which looks for termcap functions at
423 dnl configure time. We follow readline's search order.
424 dnl The required procedures are in libtermcap on NetBSD, in
425 dnl [TODO] on Linux, and in [TODO] on Solaris.
426 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
427 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
428 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
429 [AC_CHECK_LIB(ncurses, tputs,
430 LIBREADLINE="$LIBREADLINE -lncurses")]
434 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
436 if test $ac_cv_lib_readline_main = no; then
437 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
439 AC_CHECK_HEADER(readline/history.h)
440 if test $ac_cv_header_readline_history_h = no;then
441 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
443 AC_CHECK_LIB(readline, rl_completion_matches,
444 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
445 if test $ac_cv_lib_readline_rl_completion_matches = no; then
446 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
452 AC_SUBST(LIBREADLINE)
457 if test "$with_libpam" = "yes"; then
458 AC_CHECK_HEADER(security/pam_misc.h)
459 if test "$ac_cv_header_security_pam_misc_h" = yes; then
460 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
461 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
462 pam_conv_func="misc_conv"
464 AC_CHECK_HEADER(security/openpam.h)
465 if test "$ac_cv_header_security_openpam_h" = yes; then
466 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
467 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
468 pam_conv_func="openpam_ttyconv"
470 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
471 AC_MSG_WARN([*** pam support will not be built ***])
476 if test "$with_libpam" = "yes"; then
477 dnl took this test from proftpd's configure.in and suited to our needs
478 dnl -------------------------------------------------------------------------
480 dnl This next check looks funky due to a linker problem with some versions
481 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
482 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
483 dnl with RedHat 6.2 and Debian 2.2 or better.
484 AC_CHECK_LIB(pam, pam_start,
485 [AC_CHECK_LIB(pam, $pam_conv_func,
486 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
488 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
489 LIBPAM="-lpam -lpam_misc"]
493 [AC_CHECK_LIB(pam, pam_end,
494 [AC_CHECK_LIB(pam, $pam_conv_func,
495 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
496 LIBPAM="-lpam -ldl"],
497 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
498 LIBPAM="-lpam -ldl -lpam_misc"]
500 ],AC_MSG_WARN([*** pam support will not be built ***]),
507 dnl -------------------------------
508 dnl Endian-ness check
509 dnl -------------------------------
512 dnl -------------------------------
513 dnl check the size in byte of the C
514 dnl -------------------------------
515 dnl AC_CHECK_SIZEOF(char)
516 dnl AC_CHECK_SIZEOF(int)
517 dnl AC_CHECK_SIZEOF(short)
518 dnl AC_CHECK_SIZEOF(long)
520 dnl ----------------------------
521 dnl check existance of functions
522 dnl ----------------------------
523 AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
524 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
525 fcntl strnlen strndup)
526 AC_CHECK_FUNCS(setproctitle, ,
527 [AC_CHECK_LIB(util, setproctitle,
529 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
535 dnl ------------------------------------
536 dnl Determine routing get and set method
537 dnl ------------------------------------
538 AC_MSG_CHECKING(zebra between kernel interface method)
539 if test x"$opsys" = x"gnu-linux"; then
540 if test "${enable_netlink}" = "yes";then
541 AC_MSG_RESULT(netlink)
542 RT_METHOD=rt_netlink.o
543 AC_DEFINE(HAVE_NETLINK,,netlink)
545 elif test "${enable_netlink}" = "no"; then
550 AC_MSG_RESULT(netlink)
551 RT_METHOD=rt_netlink.o
552 AC_DEFINE(HAVE_NETLINK,,netlink)
555 elif test x"$opsys" = x"sol2-6";then
556 AC_MSG_RESULT(Route socket)
557 KERNEL_METHOD="kernel_socket.o"
558 RT_METHOD="rt_socket.o"
559 elif test x"$opsys" = x"sol8";then
560 AC_MSG_RESULT(Route socket)
561 KERNEL_METHOD="kernel_socket.o"
562 RT_METHOD="rt_socket.o"
563 elif test "$opsys" = "irix" ; then
564 AC_MSG_RESULT(Route socket)
565 KERNEL_METHOD="kernel_socket.o"
566 RT_METHOD="rt_socket.o"
568 AC_TRY_RUN([#include <errno.h>
569 #include <sys/types.h>
570 #include <sys/socket.h>
576 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
577 if (ac_sock < 0 && errno == EINVAL)
581 [KERNEL_METHOD=kernel_socket.o
582 RT_METHOD=rt_socket.o
583 AC_MSG_RESULT(socket)],
584 [RT_METHOD=rt_ioctl.o
585 AC_MSG_RESULT(ioctl)],
586 [KERNEL_METHOD=kernel_socket.o
587 RT_METHOD=rt_socket.o
588 AC_MSG_RESULT(socket)])
591 AC_SUBST(KERNEL_METHOD)
592 AC_SUBST(OTHER_METHOD)
594 dnl ------------------------------------
595 dnl check for broken CMSG_FIRSTHDR macro
596 dnl ------------------------------------
597 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
598 AC_RUN_IFELSE([AC_LANG_SOURCE([[
601 #define __EXTENSIONS__
604 #include <sys/types.h>
605 #include <sys/socket.h>
612 msg.msg_control = buf;
613 msg.msg_controllen = 0;
615 if (CMSG_FIRSTHDR(&msg) != NULL)
618 }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
619 [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
621 dnl ------------------------------
622 dnl check kernel route read method
623 dnl ------------------------------
624 AC_CACHE_CHECK(route read method check, zebra_rtread,
625 [if test "$netlink" = yes; then
626 RTREAD_METHOD="rtread_netlink.o"
627 zebra_rtread="netlink"
629 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
631 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
633 case $zebra_rtread in
634 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
635 zebra_rtread="proc";;
638 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
639 zebra_rtread="sysctl";;
640 *) RTREAD_METHOD="rtread_getmsg.o"
641 zebra_rtread="getmsg";;
643 *) RTREAD_METHOD="rtread_sysctl.o"
644 zebra_rtread="sysctl";;
647 AC_SUBST(RTREAD_METHOD)
649 dnl -----------------------------
650 dnl check interface lookup method
651 dnl -----------------------------
653 AC_MSG_CHECKING(interface looking up method)
654 if test "$netlink" = yes; then
655 AC_MSG_RESULT(netlink)
656 IF_METHOD=if_netlink.o
657 elif test "$opsys" = "sol2-6";then
658 AC_MSG_RESULT(Solaris GIF)
660 elif test "$opsys" = "sol8";then
661 AC_MSG_RESULT(Solaris GLIF)
662 IF_METHOD=if_ioctl_solaris.o
663 IOCTL_METHOD=ioctl_solaris.o
664 elif test "$opsys" = "irix" ; then
667 elif test "$opsys" = "openbsd";then
668 AC_MSG_RESULT(openbsd)
670 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
671 AC_MSG_RESULT(sysctl)
672 IF_METHOD=if_sysctl.o
673 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
679 AC_SUBST(IOCTL_METHOD)
681 dnl ---------------------------------------------------------------
682 dnl figure out how to specify an interface in multicast sockets API
683 dnl ---------------------------------------------------------------
684 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
685 #include <sys/types.h>
687 #ifdef HAVE_NETINET_IN_H
688 #include <netinet/in.h>
691 AC_MSG_CHECKING([for BSD struct ip_mreq hack])
692 AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
693 #include <sys/param.h>
694 #endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
697 #error No support for BSD struct ip_mreq hack detected
698 #endif],[AC_MSG_RESULT(yes)
699 AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
702 dnl -----------------------
703 dnl check proc file system.
704 dnl -----------------------
705 if test -r /proc/net/dev; then
706 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
710 if test -r /proc/net/if_inet6; then
711 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
716 dnl -----------------------------
717 dnl check ipforward detect method
718 dnl -----------------------------
719 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
720 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
722 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
724 case $zebra_ipforward_path in
725 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
726 zebra_ipforward_path="proc";;
729 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
730 zebra_ipforward_path="ews";;
731 *-freebsd*) IPFORWARD=ipforward_sysctl.o
732 zebra_ipforward_path="sysctl";;
733 *) IPFORWARD=ipforward_solaris.o
734 zebra_ipforward_path="solaris";;
736 *) IPFORWARD=ipforward_sysctl.o
737 zebra_ipforward_path="sysctl";;
741 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
746 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
747 if test "${enable_ipv6}" = "no"; then
748 AC_MSG_RESULT(disabled)
753 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
755 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
756 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
760 AC_MSG_RESULT(INRIA IPv6)
764 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
766 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
767 AC_DEFINE(KAME,1,KAME IPv6)
770 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
771 LIB_IPV6="-L/usr/local/v6/lib -linet6"
774 dnl -------------------------
776 dnl default host check
777 dnl It is not used by Kheops
778 dnl -------------------------
779 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
781 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
782 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
783 AC_DEFINE(KAME,1,KAME IPv6 stack)
786 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
787 LIB_IPV6="-L/usr/local/v6/lib -linet6"
789 AC_MSG_RESULT(MUSICA)
793 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
795 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
799 if test x"$opsys" = x"bsdi";then
800 AC_DEFINE(BSDI_NRL,,BSDI)
801 AC_MSG_RESULT(BSDI_NRL)
805 dnl ------------------------------------
806 dnl Solaris 9, 10 and potentially higher
807 dnl ------------------------------------
808 elif test x"$opsys" = x"sol8"; then
810 AC_DEFINE(HAVE_IPV6, 1, IPv6)
811 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
814 AC_MSG_RESULT(Solaris IPv6)
818 elif test "${enable_ipv6}" = "yes"; then
820 #include <linux/version.h>
821 /* 2.1.128 or later */
822 #if LINUX_VERSION_CODE >= 0x020180
826 zebra_cv_linux_ipv6=yes
827 AC_MSG_RESULT(Linux IPv6)])
829 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
832 zebra_cv_linux_ipv6=yes
833 AC_MSG_RESULT(Linux IPv6)
837 if test "$zebra_cv_linux_ipv6" = "yes";then
838 AC_MSG_CHECKING(whether libc has IPv6 support)
839 AC_TRY_LINK([#include <netinet/in.h>
840 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
843 zebra_cv_linux_ipv6=yes],
846 zebra_cv_linux_ipv6=no])
849 if test "$zebra_cv_linux_ipv6" = "yes";then
850 AC_MSG_CHECKING(for GNU libc >= 2.1)
851 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
853 #include <features.h>
854 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
858 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
864 if test "$glibc" != "yes"; then
865 INCLUDES="-I/usr/inet6/include"
866 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
867 LIB_IPV6="-L/usr/inet6/lib -linet6"
872 dnl -----------------------
873 dnl Set IPv6 related values
874 dnl -----------------------
875 LIBS="$LIB_IPV6 $LIBS"
878 if test x"$RIPNGD" = x""; then
879 AC_MSG_RESULT(IPv4 only)
883 dnl ------------------
884 dnl IPv6 header checks
885 dnl ------------------
886 if test "x${zebra_cv_ipv6}" = "xyes"; then
887 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
888 netinet6/in6_var.h netinet6/nd6.h])
891 dnl --------------------
892 dnl Daemon disable check
893 dnl --------------------
894 if test "${enable_zebra}" = "no";then
900 if test "${enable_bgpd}" = "no";then
906 if test "${enable_ripd}" = "no";then
912 if test "${enable_ospfd}" = "no";then
918 if test "${enable_watchquagga}" = "no";then
921 WATCHQUAGGA="watchquagga"
925 if test "${enable_opaque_lsa}" = "yes"; then
926 if test "${enable_ospfapi}" != "no";then
927 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
929 if test "${enable_ospfclient}" != "no";then
930 OSPFCLIENT="ospfclient"
936 case "${enable_ripngd}" in
937 "yes") RIPNGD="ripngd";;
942 case "${enable_ospf6d}" in
943 "yes") OSPF6D="ospf6d";;
948 case "${enable_isisd}" in
949 "yes") ISISD="isisd";;
954 if test "${enable_bgp_announce}" = "no";then
955 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
964 AC_SUBST(WATCHQUAGGA)
971 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
972 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
973 AC_CHECK_LIB(crypt, crypt)
974 AC_CHECK_LIB(resolv, res_init)
975 AC_CHECK_LIB(m, main)
977 dnl ---------------------------------------------------
978 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
979 dnl ---------------------------------------------------
980 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
981 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
982 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
984 dnl ---------------------------
985 dnl check system has GNU regexp
986 dnl ---------------------------
987 dnl AC_MSG_CHECKING(whether system has GNU regex)
988 AC_CHECK_LIB(c, regexec,
989 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
991 [LIB_REGEX="regex.o"])
994 dnl ------------------
995 dnl check Net-SNMP library
996 dnl ------------------
997 if test "${enable_snmp}" = "yes"; then
998 LIBS="${LIBS} -lcrypto"
999 AC_CHECK_LIB(netsnmp, asn_parse_int,
1000 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1001 AC_DEFINE(HAVE_SNMP,,SNMP)
1002 LIBS="${LIBS} -lnetsnmp"],
1003 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1005 for ac_snmp in /usr/include \
1006 /usr/local/include \
1008 test -f "${ac_snmp}/net-snmp/library/asn1.h" && break
1013 AC_MSG_ERROR([--enable-snmp given, but can not find header])
1016 SNMP_INCLUDES="-I${ac_snmp}/net-snmp"
1017 SNMP_INCLUDES="${SNMP_INCLUDES} -I${ac_snmp}/net-snmp/library"
1021 AC_SUBST(SNMP_INCLUDES)
1024 dnl ----------------------------
1025 dnl check sa_len of sockaddr
1026 dnl ----------------------------
1027 AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1028 AC_TRY_COMPILE([#include <sys/types.h>
1029 #include <sys/socket.h>
1030 ],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1032 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1035 dnl ----------------------------
1036 dnl check sin_len of sockaddr_in
1037 dnl ----------------------------
1038 AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1039 AC_TRY_COMPILE([#include <sys/types.h>
1040 #include <netinet/in.h>
1041 ],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1043 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1046 dnl ----------------------------
1047 dnl check sun_len of sockaddr_un
1048 dnl ----------------------------
1049 AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1050 AC_TRY_COMPILE([#include <sys/types.h>
1052 ],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1054 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1057 dnl -----------------------------------
1058 dnl check sin6_scope_id of sockaddr_in6
1059 dnl -----------------------------------
1060 if test "$zebra_cv_ipv6" = yes; then
1061 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1062 AC_TRY_COMPILE([#include <sys/types.h>
1063 #include <netinet/in.h>
1064 ],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1066 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1070 dnl ----------------------------
1071 dnl check socklen_t exist or not
1072 dnl ----------------------------
1073 AC_MSG_CHECKING(whther socklen_t is defined)
1074 AC_TRY_COMPILE([#include <sys/types.h>
1075 #include <sys/socket.h>
1076 #include <netinet/in.h>
1077 ],[socklen_t ac_x;],
1079 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1082 dnl ------------------------
1083 dnl check struct sockaddr_dl
1084 dnl ------------------------
1085 AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1086 AC_EGREP_HEADER(sockaddr_dl,
1089 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1092 dnl --------------------------
1093 dnl check structure ifaliasreq
1094 dnl --------------------------
1095 AC_MSG_CHECKING(whether struct ifaliasreq exist)
1096 AC_EGREP_HEADER(ifaliasreq,
1099 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1102 dnl ----------------------------
1103 dnl check structure in6_aliasreq
1104 dnl ----------------------------
1105 AC_MSG_CHECKING(whether struct in6_aliasreq exist)
1106 AC_EGREP_HEADER(in6_aliasreq,
1109 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1112 dnl -----------------------------------
1113 dnl check ifra_lifetime of in6_aliasreq
1114 dnl -----------------------------------
1115 AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1116 AC_TRY_COMPILE([#include <sys/types.h>
1117 #include <netinet6/in6_var.h>
1118 ],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1120 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
1123 dnl ---------------------------
1124 dnl check structure rt_addrinfo
1125 dnl ---------------------------
1126 AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1127 AC_EGREP_HEADER(rt_addrinfo,
1130 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1133 dnl --------------------------
1134 dnl check structure in_pktinfo
1135 dnl --------------------------
1136 AC_MSG_CHECKING(whether struct in_pktinfo exist)
1137 AC_TRY_COMPILE([#include <netinet/in.h>
1138 ],[struct in_pktinfo ac_x;],
1140 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1143 dnl ----------------------------------
1144 dnl check struct nd_opt_homeagent_info
1145 dnl ----------------------------------
1146 AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1147 AC_EGREP_HEADER(nd_opt_homeagent_info,
1150 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1153 dnl --------------------------------
1154 dnl check struct nd_opt_adv_interval
1155 dnl --------------------------------
1156 AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1157 AC_EGREP_HEADER(nd_opt_adv_interval,
1160 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1163 dnl ------------------------------------
1164 dnl check fields in nd_opt_adv_interval
1165 dnl ------------------------------------
1166 AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1167 AC_EGREP_HEADER(nd_opt_ai_type,
1170 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1173 dnl --------------------------------------
1174 dnl checking for getrusage struct and call
1175 dnl --------------------------------------
1176 AC_MSG_CHECKING(whether getrusage is available)
1177 AC_TRY_COMPILE([#include <sys/resource.h>
1178 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1180 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1183 dnl -------------------
1184 dnl capabilities checks
1185 dnl -------------------
1186 if test "${enable_capabilities}" != "no"; then
1187 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1188 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1190 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1191 quagga_ac_keepcaps="yes"],
1194 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1195 AC_CHECK_HEADERS(sys/capability.h)
1197 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1198 AC_CHECK_LIB(cap, cap_init,
1199 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1201 quagga_ac_lcaps="yes"]
1204 AC_CHECK_HEADERS(priv.h,
1205 [AC_MSG_CHECKING(Solaris style privileges are available)
1206 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1208 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1209 quagga_ac_scaps="yes"],
1215 if test x"${quagga_ac_scaps}" = x"yes" \
1216 -o x"${quagga_ac_lcaps}" = x"yes"; then
1217 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
1222 dnl -------------------
1223 dnl test for ucontext.h
1224 dnl -------------------
1225 AC_CHECK_HEADERS(ucontext.h)
1227 dnl ---------------------------
1228 dnl check for glibc 'backtrace'
1229 dnl ---------------------------
1230 if test "${glibc}" = "yes"; then
1231 AC_CHECK_HEADER(execinfo.h)
1233 if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1234 AC_CHECK_FUNC(backtrace,
1235 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1242 CONFDATE=`date '+%Y%m%d'`
1245 dnl ------------------------------
1246 dnl set paths for state directory
1247 dnl ------------------------------
1248 if test "${prefix}" = "NONE"; then
1249 quagga_statedir_prefix="";
1251 quagga_statedir_prefix=${prefix}
1253 if test "${localstatedir}" = '${prefix}/var'; then
1254 AC_CACHE_CHECK(state directory,ac_statedir,
1255 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1256 ${quagga_statedir_prefix}/var/adm dnl
1257 ${quagga_statedir_prefix}/etc dnl
1263 test -d $QUAGGA_STATE_DIR && break
1265 quagga_statedir=$QUAGGA_STATE_DIR])
1267 quagga_statedir=${localstatedir}
1268 AC_MSG_CHECKING(directory to use for state file)
1269 AC_MSG_RESULT(${quagga_statedir})
1270 AC_SUBST(quagga_statedir)
1272 if test $quagga_statedir = "/dev/null"; then
1273 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1276 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1277 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1278 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1279 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1280 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1281 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1282 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1283 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1284 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1285 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1286 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1287 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1288 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1289 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1290 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1291 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1292 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1294 dnl -------------------------------
1295 dnl Quagga sources should always be
1296 dnl current wrt interfaces. Dont
1297 dnl allow deprecated interfaces to
1299 dnl -------------------------------
1300 AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1302 dnl ---------------------------
1303 dnl Check htonl works correctly
1304 dnl ---------------------------
1305 AC_MSG_CHECKING(for working htonl)
1306 AC_CACHE_VAL(ac_cv_htonl_works, [
1307 AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1308 #include <sys/types.h>
1313 #ifdef HAVE_NETINET_IN_H
1314 #include <netinet/in.h>
1317 ac_cv_htonl_works=yes,
1318 ac_cv_htonl_works=no)])
1319 AC_MSG_RESULT($ac_cv_htonl_works)
1321 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1322 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1323 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1324 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1329 isisd/topology/Makefile
1330 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1331 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1332 AC_CONFIG_FILES([solaris/Makefile])
1334 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1335 ## Hack, but working solution to avoid rebuilding of quagga.info.
1336 ## It's already in CVS until texinfo 4.7 is more common.
1337 AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
1341 Quagga configuration
1342 --------------------
1343 quagga version : ${PACKAGE_VERSION}
1344 host operationg system : ${host_os}
1345 source code location : ${srcdir}
1347 compiler flags : ${CFLAGS}
1348 includes : ${INCLUDES} ${SNMP_INCLUDES}
1349 linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
1350 state file directory : ${quagga_statedir}
1351 config file directory : `eval echo \`echo ${sysconfdir}\``
1352 example directory : `eval echo \`echo ${exampledir}\``
1353 user to run as : ${enable_user}
1354 group to run as : ${enable_group}
1355 group for vty sockets : ${enable_vty_group}
1356 config file mask : ${enable_configfile_mask}
1357 log file mask : ${enable_logfile_mask}
1359 The above user and group must have read/write access to the state file
1360 directory and to the config files in the config file directory.