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.111 2005/08/25 14:50:05 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 -fno-omit-frame-pointer -g -Wall"
92 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
93 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
95 # TODO: conditionally addd -Wpacked if handled
98 dnl ---------------------------------------------------------------------
99 dnl Intel compiler warnings we ignore:
100 dnl 279: controlling expression is constant.
101 dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
102 dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
104 dnl 981: operands are evaluated in unspecified order.
105 dnl ---------------------------------------------------------------------
107 if test "$ICC" = "yes"; then
108 CFLAGS="-Os -g -Wall -wd 279,869,981"
116 AC_CHECK_TOOL(AR, ar)
117 AC_CHECK_TOOL(RANLIB, ranlib, :)
129 dnl ----------------------
130 dnl Packages configuration
131 dnl ----------------------
133 [ --enable-vtysh include integrated vty shell for Quagga])
135 [ --disable-ipv6 turn off IPv6 related features and daemons])
137 [ --disable-zebra do not build zebra daemon])
139 [ --disable-bgpd do not build bgpd])
141 [ --disable-ripd do not build ripd])
142 AC_ARG_ENABLE(ripngd,
143 [ --disable-ripngd do not build ripngd])
145 [ --disable-ospfd do not build ospfd])
146 AC_ARG_ENABLE(ospf6d,
147 [ --disable-ospf6d do not build ospf6d])
148 AC_ARG_ENABLE(watchquagga,
149 [ --disable-watchquagga do not build watchquagga])
151 [ --enable-isisd build isisd])
152 AC_ARG_ENABLE(bgp-announce,
153 [ --disable-bgp-announce, turn off BGP route announcement])
154 AC_ARG_ENABLE(netlink,
155 [ --enable-netlink force to use Linux netlink interface])
156 AC_ARG_ENABLE(broken-aliases,
157 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
159 [ --enable-snmp enable SNMP support])
161 [ --with-libpam use libpam for PAM support in vtysh])
162 AC_ARG_ENABLE(tcp-zebra,
163 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
164 AC_ARG_ENABLE(opaque-lsa,
165 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
166 AC_ARG_ENABLE(ospfapi,
167 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
168 (this is the default if --enable-opaque-lsa is not set)])
169 AC_ARG_ENABLE(ospfclient,
170 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
171 (this is the default if --disable-ospfapi is set)])
172 AC_ARG_ENABLE(ospf-te,
173 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
174 AC_ARG_ENABLE(multipath,
175 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
176 AC_ARG_ENABLE(quagga_user,
177 [ --enable-user=ARG user to run Quagga suite as (default quagga)])
178 AC_ARG_ENABLE(quagga_group,
179 [ --enable-group=ARG group to run Quagga suite as (default quagga)])
180 AC_ARG_ENABLE(vty_group,
181 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
182 AC_ARG_ENABLE(configfile_mask,
183 [ --enable-configfile-mask=ARG set mask for config files])
184 AC_ARG_ENABLE(logfile_mask,
185 [ --enable-logfile-mask=ARG set mask for log files])
188 [ --disable-rtadv disable IPV6 router advertisement feature])
190 [ --enable-irdp enable IRDP server support in zebra])
191 AC_ARG_ENABLE(isis_topology,
192 [ --enable-isis-topology enable IS-IS topology generator])
193 AC_ARG_ENABLE(capabilities,
194 [ --disable-capabilities disable using POSIX capabilities])
195 AC_ARG_ENABLE(gcc_ultra_verbose,
196 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
197 AC_ARG_ENABLE(gcc-rdynamic,
198 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
199 AC_ARG_ENABLE(time-check,
200 [ --disable-time-check disable slow thread warning messages])
202 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
203 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
204 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
205 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
206 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
209 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
210 LDFLAGS="${LDFLAGS} -rdynamic"
213 if test x"${enable_time_check}" != x"no" ; then
214 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
215 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
217 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
221 if test "${enable_broken_aliases}" = "yes"; then
222 if test "${enable_netlink}" = "yes"
224 echo "Sorry, you can't use netlink with broken aliases"
227 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
231 if test "${enable_tcp_zebra}" = "yes"; then
232 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
235 if test "${enable_opaque_lsa}" = "yes"; then
236 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
239 if test "${enable_ospf_te}" = "yes"; then
240 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
241 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
244 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
245 if test "${enable_rtadv}" != "no"; then
247 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
252 if test "${enable_irdp}" = "yes"; then
253 AC_DEFINE(HAVE_IRDP,, IRDP )
256 if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
257 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
258 ISIS_TOPOLOGY_INCLUDES="-I./topology"
259 ISIS_TOPOLOGY_DIR="topology"
260 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
263 AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
264 AC_SUBST(ISIS_TOPOLOGY_DIR)
265 AC_SUBST(ISIS_TOPOLOGY_LIB)
267 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
269 elif test "${enable_user}" = "no"; then
273 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
274 enable_group="quagga"
275 elif test "${enable_group}" = "no"; then
279 if test x"${enable_vty_group}" = x"yes" ; then
280 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
281 elif test x"${enable_vty_group}" != x""; then
282 if test x"${enable_vty_group}" != x"no"; then
283 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
286 AC_SUBST([enable_user])
287 AC_SUBST([enable_group])
288 AC_SUBST([enable_vty_group])
289 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
290 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
292 enable_configfile_mask=${enable_configfile_mask:-0600}
293 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
295 enable_logfile_mask=${enable_logfile_mask:-0600}
296 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
302 case "${enable_multipath}" in
304 MULTIPATH_NUM="${enable_multipath}"
309 echo "Please specify digit to --enable-multipath ARG."
316 AC_SUBST(MULTIPATH_NUM)
318 dnl -------------------
319 dnl Check header files.
320 dnl -------------------
322 AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
323 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
324 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
325 sys/param.h libutil.h limits.h])
327 AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
328 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
329 net/if.h net/if_var.h netinet/in_var.h])
331 dnl V6 headers are checked below, after we check for v6
338 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
340 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
342 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
343 AC_DEFINE(SUNOS_5, 1, SunOS 5)
344 AC_CHECK_LIB(xnet, main)
348 | [*-sunos5.1[0-9]] \
349 | [*-sunos5.1[0-9].[0-9]] \
350 | [*-solaris2.[8-9]] \
351 | [*-solaris2.1[0-9]] \
352 | [*-solaris2.1[0-9].[0-9]])
354 AC_DEFINE(SUNOS_59,,SunOS 5.8 up)
355 AC_DEFINE(SUNOS_5, 1, SunOS 5)
356 AC_CHECK_LIB(socket, main)
357 AC_CHECK_LIB(nsl, main)
358 AC_CHECK_LIB(umem, main)
361 *-sunos5* | *-solaris2*)
362 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
363 AC_CHECK_LIB(socket, main)
364 AC_CHECK_LIB(nsl, main)
369 AC_DEFINE(GNU_LINUX,,GNU Linux)
372 AC_CHECK_LIB(nsl, gethostbyname)
373 AC_CHECK_LIB(socket, socket)
377 AC_DEFINE(OPEN_BSD,,OpenBSD)
381 OTHER_METHOD="mtu_kvm.o"
382 AC_CHECK_LIB(kvm, main)
386 AC_DEFINE(IRIX_65,,IRIX 6.5)
390 dnl ---------------------
391 dnl Integrated VTY option
392 dnl ---------------------
393 case "${enable_vtysh}" in
394 "yes") VTYSH="vtysh";
395 AC_DEFINE(VTYSH,,VTY shell)
396 AC_PATH_PROG(PERL, perl)
397 dnl Vtysh uses libreadline, which looks for termcap functions at
398 dnl configure time. We follow readline's search order.
399 dnl The required procedures are in libtermcap on NetBSD, in
400 dnl [TODO] on Linux, and in [TODO] on Solaris.
401 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
402 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
403 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
404 [AC_CHECK_LIB(ncurses, tputs,
405 LIBREADLINE="$LIBREADLINE -lncurses")]
409 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
411 if test $ac_cv_lib_readline_main = no; then
412 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
414 AC_CHECK_HEADER(readline/history.h)
415 if test $ac_cv_header_readline_history_h = no;then
416 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
418 AC_CHECK_LIB(readline, rl_completion_matches,
419 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
420 if test $ac_cv_lib_readline_rl_completion_matches = no; then
421 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
427 AC_SUBST(LIBREADLINE)
432 if test "$with_libpam" = "yes"; then
433 AC_CHECK_HEADER(security/pam_misc.h)
434 if test "$ac_cv_header_security_pam_misc_h" = yes; then
435 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
436 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
437 pam_conv_func="misc_conv"
439 AC_CHECK_HEADER(security/openpam.h)
440 if test "$ac_cv_header_security_openpam_h" = yes; then
441 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
442 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
443 pam_conv_func="openpam_ttyconv"
445 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
446 AC_MSG_WARN([*** pam support will not be built ***])
451 if test "$with_libpam" = "yes"; then
452 dnl took this test from proftpd's configure.in and suited to our needs
453 dnl -------------------------------------------------------------------------
455 dnl This next check looks funky due to a linker problem with some versions
456 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
457 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
458 dnl with RedHat 6.2 and Debian 2.2 or better.
459 AC_CHECK_LIB(pam, pam_start,
460 [AC_CHECK_LIB(pam, $pam_conv_func,
461 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
463 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
464 LIBPAM="-lpam -lpam_misc"]
468 [AC_CHECK_LIB(pam, pam_end,
469 [AC_CHECK_LIB(pam, $pam_conv_func,
470 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
471 LIBPAM="-lpam -ldl"],
472 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
473 LIBPAM="-lpam -ldl -lpam_misc"]
475 ],AC_MSG_WARN([*** pam support will not be built ***]),
482 dnl -------------------------------
483 dnl Endian-ness check
484 dnl -------------------------------
487 dnl -------------------------------
488 dnl check the size in byte of the C
489 dnl -------------------------------
490 dnl AC_CHECK_SIZEOF(char)
491 dnl AC_CHECK_SIZEOF(int)
492 dnl AC_CHECK_SIZEOF(short)
493 dnl AC_CHECK_SIZEOF(long)
495 dnl ----------------------------
496 dnl check existance of functions
497 dnl ----------------------------
498 AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
499 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
501 AC_CHECK_FUNCS(setproctitle, ,
502 [AC_CHECK_LIB(util, setproctitle,
504 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
510 dnl ------------------------------------
511 dnl Determine routing get and set method
512 dnl ------------------------------------
513 AC_MSG_CHECKING(zebra between kernel interface method)
514 if test x"$opsys" = x"gnu-linux"; then
515 if test "${enable_netlink}" = "yes";then
516 AC_MSG_RESULT(netlink)
517 RT_METHOD=rt_netlink.o
518 AC_DEFINE(HAVE_NETLINK,,netlink)
520 elif test "${enable_netlink}" = "no"; then
525 AC_MSG_RESULT(netlink)
526 RT_METHOD=rt_netlink.o
527 AC_DEFINE(HAVE_NETLINK,,netlink)
530 elif test x"$opsys" = x"sol2-6";then
531 AC_MSG_RESULT(Route socket)
532 KERNEL_METHOD="kernel_socket.o"
533 RT_METHOD="rt_socket.o"
534 elif test x"$opsys" = x"sol8";then
535 AC_MSG_RESULT(Route socket)
536 KERNEL_METHOD="kernel_socket.o"
537 RT_METHOD="rt_socket.o"
538 elif test "$opsys" = "irix" ; then
539 AC_MSG_RESULT(Route socket)
540 KERNEL_METHOD="kernel_socket.o"
541 RT_METHOD="rt_socket.o"
543 AC_TRY_RUN([#include <errno.h>
544 #include <sys/types.h>
545 #include <sys/socket.h>
551 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
552 if (ac_sock < 0 && errno == EINVAL)
556 [KERNEL_METHOD=kernel_socket.o
557 RT_METHOD=rt_socket.o
558 AC_MSG_RESULT(socket)],
559 [RT_METHOD=rt_ioctl.o
560 AC_MSG_RESULT(ioctl)],
561 [KERNEL_METHOD=kernel_socket.o
562 RT_METHOD=rt_socket.o
563 AC_MSG_RESULT(socket)])
566 AC_SUBST(KERNEL_METHOD)
567 AC_SUBST(OTHER_METHOD)
569 dnl ------------------------------------
570 dnl check for broken CMSG_FIRSTHDR macro
571 dnl ------------------------------------
572 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
573 AC_RUN_IFELSE([AC_LANG_SOURCE([[
576 #define __EXTENSIONS__
579 #include <sys/types.h>
580 #include <sys/socket.h>
587 msg.msg_control = buf;
588 msg.msg_controllen = 0;
590 if (CMSG_FIRSTHDR(&msg) != NULL)
593 }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
594 [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
596 dnl ------------------------------
597 dnl check kernel route read method
598 dnl ------------------------------
599 AC_CACHE_CHECK(route read method check, zebra_rtread,
600 [if test "$netlink" = yes; then
601 RTREAD_METHOD="rtread_netlink.o"
602 zebra_rtread="netlink"
604 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
606 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
608 case $zebra_rtread in
609 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
610 zebra_rtread="proc";;
613 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
614 zebra_rtread="sysctl";;
615 *) RTREAD_METHOD="rtread_getmsg.o"
616 zebra_rtread="getmsg";;
618 *) RTREAD_METHOD="rtread_sysctl.o"
619 zebra_rtread="sysctl";;
622 AC_SUBST(RTREAD_METHOD)
624 dnl -----------------------------
625 dnl check interface lookup method
626 dnl -----------------------------
628 AC_MSG_CHECKING(interface looking up method)
629 if test "$netlink" = yes; then
630 AC_MSG_RESULT(netlink)
631 IF_METHOD=if_netlink.o
632 elif test "$opsys" = "sol2-6";then
633 AC_MSG_RESULT(Solaris GIF)
635 elif test "$opsys" = "sol8";then
636 AC_MSG_RESULT(Solaris GLIF)
637 IF_METHOD=if_ioctl_solaris.o
638 IOCTL_METHOD=ioctl_solaris.o
639 elif test "$opsys" = "irix" ; then
642 elif test "$opsys" = "openbsd";then
643 AC_MSG_RESULT(openbsd)
645 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
646 AC_MSG_RESULT(sysctl)
647 IF_METHOD=if_sysctl.o
648 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
654 AC_SUBST(IOCTL_METHOD)
656 dnl ---------------------------------------------------------------
657 dnl figure out how to specify an interface in multicast sockets API
658 dnl ---------------------------------------------------------------
659 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
660 #include <sys/types.h>
662 #ifdef HAVE_NETINET_IN_H
663 #include <netinet/in.h>
666 AC_MSG_CHECKING([for BSD struct ip_mreq hack])
667 AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
668 #include <sys/param.h>
669 #endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
672 #error No support for BSD struct ip_mreq hack detected
673 #endif],[AC_MSG_RESULT(yes)
674 AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
677 dnl -----------------------
678 dnl check proc file system.
679 dnl -----------------------
680 if test -r /proc/net/dev; then
681 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
685 if test -r /proc/net/if_inet6; then
686 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
691 dnl -----------------------------
692 dnl check ipforward detect method
693 dnl -----------------------------
694 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
695 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
697 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
699 case $zebra_ipforward_path in
700 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
701 zebra_ipforward_path="proc";;
704 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
705 zebra_ipforward_path="ews";;
706 *-freebsd*) IPFORWARD=ipforward_sysctl.o
707 zebra_ipforward_path="sysctl";;
708 *) IPFORWARD=ipforward_solaris.o
709 zebra_ipforward_path="solaris";;
711 *) IPFORWARD=ipforward_sysctl.o
712 zebra_ipforward_path="sysctl";;
716 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
721 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
722 if test "${enable_ipv6}" = "no"; then
723 AC_MSG_RESULT(disabled)
728 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
730 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
731 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
735 AC_MSG_RESULT(INRIA IPv6)
739 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
741 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
742 AC_DEFINE(KAME,1,KAME IPv6)
745 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
746 LIB_IPV6="-L/usr/local/v6/lib -linet6"
749 dnl -------------------------
751 dnl default host check
752 dnl It is not used by Kheops
753 dnl -------------------------
754 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
756 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
757 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
758 AC_DEFINE(KAME,1,KAME IPv6 stack)
761 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
762 LIB_IPV6="-L/usr/local/v6/lib -linet6"
764 AC_MSG_RESULT(MUSICA)
768 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
770 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
774 if test x"$opsys" = x"bsdi";then
775 AC_DEFINE(BSDI_NRL,,BSDI)
776 AC_MSG_RESULT(BSDI_NRL)
780 dnl ------------------------------------
781 dnl Solaris 9, 10 and potentially higher
782 dnl ------------------------------------
783 elif test x"$opsys" = x"sol8"; then
785 AC_DEFINE(HAVE_IPV6, 1, IPv6)
786 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
789 AC_MSG_RESULT(Solaris IPv6)
793 elif test "${enable_ipv6}" = "yes"; then
795 #include <linux/version.h>
796 /* 2.1.128 or later */
797 #if LINUX_VERSION_CODE >= 0x020180
801 zebra_cv_linux_ipv6=yes
802 AC_MSG_RESULT(Linux IPv6)])
804 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
807 zebra_cv_linux_ipv6=yes
808 AC_MSG_RESULT(Linux IPv6)
812 if test "$zebra_cv_linux_ipv6" = "yes";then
813 AC_MSG_CHECKING(whether libc has IPv6 support)
814 AC_TRY_LINK([#include <netinet/in.h>
815 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
818 zebra_cv_linux_ipv6=yes],
821 zebra_cv_linux_ipv6=no])
824 if test "$zebra_cv_linux_ipv6" = "yes";then
825 AC_MSG_CHECKING(for GNU libc >= 2.1)
826 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
828 #include <features.h>
829 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
833 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
839 if test "$glibc" != "yes"; then
840 INCLUDES="-I/usr/inet6/include"
841 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
842 LIB_IPV6="-L/usr/inet6/lib -linet6"
847 dnl -----------------------
848 dnl Set IPv6 related values
849 dnl -----------------------
850 LIBS="$LIB_IPV6 $LIBS"
853 if test x"$RIPNGD" = x""; then
854 AC_MSG_RESULT(IPv4 only)
858 dnl ------------------
859 dnl IPv6 header checks
860 dnl ------------------
861 if test "x${zebra_cv_ipv6}" = "xyes"; then
862 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
863 netinet6/in6_var.h netinet6/nd6.h])
866 dnl --------------------
867 dnl Daemon disable check
868 dnl --------------------
869 if test "${enable_zebra}" = "no";then
875 if test "${enable_bgpd}" = "no";then
881 if test "${enable_ripd}" = "no";then
887 if test "${enable_ospfd}" = "no";then
893 if test "${enable_watchquagga}" = "no";then
896 WATCHQUAGGA="watchquagga"
900 if test "${enable_opaque_lsa}" = "yes"; then
901 if test "${enable_ospfapi}" != "no";then
902 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
904 if test "${enable_ospfclient}" != "no";then
905 OSPFCLIENT="ospfclient"
911 case "${enable_ripngd}" in
912 "yes") RIPNGD="ripngd";;
917 case "${enable_ospf6d}" in
918 "yes") OSPF6D="ospf6d";;
923 case "${enable_isisd}" in
924 "yes") ISISD="isisd";;
929 if test "${enable_bgp_announce}" = "no";then
930 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
939 AC_SUBST(WATCHQUAGGA)
946 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
947 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
948 AC_CHECK_LIB(crypt, crypt)
949 AC_CHECK_LIB(resolv, res_init)
950 AC_CHECK_LIB(m, main)
952 dnl ---------------------------------------------------
953 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
954 dnl ---------------------------------------------------
955 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
956 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
957 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
959 dnl ---------------------------
960 dnl check system has GNU regexp
961 dnl ---------------------------
962 dnl AC_MSG_CHECKING(whether system has GNU regex)
963 AC_CHECK_LIB(c, regexec,
964 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
966 [LIB_REGEX="regex.o"])
969 dnl ------------------
970 dnl check SNMP library
971 dnl ------------------
972 if test "${enable_snmp}" = "yes";then
973 dnl AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
974 if test "${HAVE_SNMP}" = ""; then
977 unset ac_cv_lib_snmp_asn_parse_int
978 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
979 if test "${NEED_CRYPTO}" = ""; then
980 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes ])
982 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" ],,"-lcrypto")
986 if test "${HAVE_SNMP}" = ""; then
989 unset ac_cv_lib_snmp_asn_parse_int
990 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes, )
991 if test "${HAVE_SNMP}" = ""; then
992 unset ac_cv_lib_snmp_asn_parse_int
993 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
994 if test "${NEED_CRYPTO}" = "yes"; then
995 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
1001 if test "${HAVE_SNMP}" = ""; then
1003 LIBS="-L/usr/local/lib"
1004 unset ac_cv_lib_snmp_asn_parse_int
1005 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
1006 if test "${HAVE_SNMP}" = ""; then
1007 unset ac_cv_lib_snmp_asn_parse_int
1008 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
1009 if test "${NEED_CRYPTO}" = "yes"; then
1010 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
1016 if test "${HAVE_SNMP}" = "yes"; then
1017 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
1019 test -f "${ac_snmp}" && break
1023 /usr/include/net-snmp/*)
1024 AC_DEFINE(HAVE_SNMP,,SNMP)
1025 AC_DEFINE(HAVE_NETSNMP,,SNMP)
1026 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
1027 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/include/net-snmp -I/usr/include/net-snmp/library"
1028 if test "${HAVE_NETSNMP}" = "yes"; then
1029 LIBS="${LIBS} -lnetsnmp"
1031 LIBS="${LIBS} -lsnmp"
1034 /usr/include/ucd-snmp/*)
1035 AC_DEFINE(HAVE_SNMP,,SNMP)
1036 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/include/ucd-snmp"
1037 LIBS="${LIBS} -lsnmp"
1039 /usr/local/include/ucd-snmp/*)
1040 AC_DEFINE(HAVE_SNMP,,SNMP)
1041 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/local/include/ucd-snmp"
1042 LIBS="${LIBS} -L/usr/local/lib -lsnmp"
1044 /usr/local/include/net-snmp/*)
1045 AC_DEFINE(HAVE_SNMP,,SNMP)
1046 AC_DEFINE(HAVE_NET_SNMP,,SNMP)
1047 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
1048 SNMP_INCLUDES="${SNMP_INCLUDES} -I/usr/local/include/net-snmp"
1049 LIBS="${LIBS} -L/usr/local/lib -lnetsnmp"
1052 if test "${NEED_CRYPTO}" = "yes"; then
1053 LIBS="${LIBS} -lcrypto"
1058 if test "${enable_snmp}" = "yes" -a "${HAVE_SNMP}" != "yes"; then
1059 AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])
1062 AC_SUBST(SNMP_INCLUDES)
1064 dnl ----------------------------
1065 dnl check sa_len of sockaddr
1066 dnl ----------------------------
1067 AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1068 AC_TRY_COMPILE([#include <sys/types.h>
1069 #include <sys/socket.h>
1070 ],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1072 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1075 dnl ----------------------------
1076 dnl check sin_len of sockaddr_in
1077 dnl ----------------------------
1078 AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1079 AC_TRY_COMPILE([#include <sys/types.h>
1080 #include <netinet/in.h>
1081 ],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1083 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1086 dnl ----------------------------
1087 dnl check sun_len of sockaddr_un
1088 dnl ----------------------------
1089 AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1090 AC_TRY_COMPILE([#include <sys/types.h>
1092 ],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1094 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1097 dnl -----------------------------------
1098 dnl check sin6_scope_id of sockaddr_in6
1099 dnl -----------------------------------
1100 if test "$zebra_cv_ipv6" = yes; then
1101 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1102 AC_TRY_COMPILE([#include <sys/types.h>
1103 #include <netinet/in.h>
1104 ],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1106 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1110 dnl ----------------------------
1111 dnl check socklen_t exist or not
1112 dnl ----------------------------
1113 AC_MSG_CHECKING(whther socklen_t is defined)
1114 AC_TRY_COMPILE([#include <sys/types.h>
1115 #include <sys/socket.h>
1116 #include <netinet/in.h>
1117 ],[socklen_t ac_x;],
1119 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1122 dnl ------------------------
1123 dnl check struct sockaddr_dl
1124 dnl ------------------------
1125 AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1126 AC_EGREP_HEADER(sockaddr_dl,
1129 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1132 dnl --------------------------
1133 dnl check structure ifaliasreq
1134 dnl --------------------------
1135 AC_MSG_CHECKING(whether struct ifaliasreq exist)
1136 AC_EGREP_HEADER(ifaliasreq,
1139 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1142 dnl ----------------------------
1143 dnl check structure in6_aliasreq
1144 dnl ----------------------------
1145 AC_MSG_CHECKING(whether struct in6_aliasreq exist)
1146 AC_EGREP_HEADER(in6_aliasreq,
1149 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1152 dnl -----------------------------------
1153 dnl check ifra_lifetime of in6_aliasreq
1154 dnl -----------------------------------
1155 AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1156 AC_TRY_COMPILE([#include <sys/types.h>
1157 #include <netinet6/in6_var.h>
1158 ],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1160 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
1163 dnl ---------------------------
1164 dnl check structure rt_addrinfo
1165 dnl ---------------------------
1166 AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1167 AC_EGREP_HEADER(rt_addrinfo,
1170 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1173 dnl --------------------------
1174 dnl check structure in_pktinfo
1175 dnl --------------------------
1176 AC_MSG_CHECKING(whether struct in_pktinfo exist)
1177 AC_TRY_COMPILE([#include <netinet/in.h>
1178 ],[struct in_pktinfo ac_x;],
1180 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1183 dnl ----------------------------------
1184 dnl check struct nd_opt_homeagent_info
1185 dnl ----------------------------------
1186 AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1187 AC_EGREP_HEADER(nd_opt_homeagent_info,
1190 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1193 dnl --------------------------------
1194 dnl check struct nd_opt_adv_interval
1195 dnl --------------------------------
1196 AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1197 AC_EGREP_HEADER(nd_opt_adv_interval,
1200 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1203 dnl ------------------------------------
1204 dnl check fields in nd_opt_adv_interval
1205 dnl ------------------------------------
1206 AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1207 AC_EGREP_HEADER(nd_opt_ai_type,
1210 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1213 dnl --------------------------------------
1214 dnl checking for getrusage struct and call
1215 dnl --------------------------------------
1216 AC_MSG_CHECKING(whether getrusage is available)
1217 AC_TRY_COMPILE([#include <sys/resource.h>
1218 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1220 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1223 dnl -------------------
1224 dnl capabilities checks
1225 dnl -------------------
1226 if test "${enable_capabilities}" != "no"; then
1227 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1228 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1230 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1231 quagga_ac_keepcaps="yes"],
1234 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1235 AC_CHECK_HEADERS(sys/capability.h)
1237 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1238 AC_CHECK_LIB(cap, cap_init,
1239 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1247 dnl -------------------
1248 dnl test for ucontext.h
1249 dnl -------------------
1250 AC_CHECK_HEADERS(ucontext.h)
1252 dnl ---------------------------
1253 dnl check for glibc 'backtrace'
1254 dnl ---------------------------
1255 if test "${glibc}" = "yes"; then
1256 AC_CHECK_HEADER(execinfo.h)
1258 if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1259 AC_CHECK_FUNC(backtrace,
1260 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1267 CONFDATE=`date '+%Y%m%d'`
1270 dnl ------------------------------
1271 dnl set paths for state directory
1272 dnl ------------------------------
1273 if test "${prefix}" = "NONE"; then
1274 quagga_statedir_prefix="";
1276 quagga_statedir_prefix=${prefix}
1278 if test "${localstatedir}" = '${prefix}/var'; then
1279 AC_CACHE_CHECK(state directory,ac_statedir,
1280 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1281 ${quagga_statedir_prefix}/var/adm dnl
1282 ${quagga_statedir_prefix}/etc dnl
1288 test -d $QUAGGA_STATE_DIR && break
1290 quagga_statedir=$QUAGGA_STATE_DIR])
1292 quagga_statedir=${localstatedir}
1293 AC_MSG_CHECKING(directory to use for state file)
1294 AC_MSG_RESULT(${quagga_statedir})
1295 AC_SUBST(quagga_statedir)
1297 if test $quagga_statedir = "/dev/null"; then
1298 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1301 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1302 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1303 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1304 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1305 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1306 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1307 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1308 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1309 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1310 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1311 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1312 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1313 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1314 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1315 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1316 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1317 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1319 dnl -------------------------------
1320 dnl Quagga sources should always be
1321 dnl current wrt interfaces. Dont
1322 dnl allow deprecated interfaces to
1324 dnl -------------------------------
1325 AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1327 dnl ---------------------------
1328 dnl Check htonl works correctly
1329 dnl ---------------------------
1330 AC_MSG_CHECKING(for working htonl)
1331 AC_CACHE_VAL(ac_cv_htonl_works, [
1332 AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1333 #include <sys/types.h>
1338 #ifdef HAVE_NETINET_IN_H
1339 #include <netinet/in.h>
1342 ac_cv_htonl_works=yes,
1343 ac_cv_htonl_works=no)])
1344 AC_MSG_RESULT($ac_cv_htonl_works)
1346 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1347 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1348 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1349 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1354 isisd/topology/Makefile
1355 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1356 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1357 AC_CONFIG_FILES([solaris/Makefile])
1359 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1360 ## Hack, but working solution to avoid rebuilding of quagga.info.
1361 ## It's already in CVS until texinfo 4.7 is more common.
1362 AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
1366 Quagga configuration
1367 --------------------
1368 quagga version : ${PACKAGE_VERSION}
1369 host operationg system : ${host_os}
1370 source code location : ${srcdir}
1372 compiler flags : ${CFLAGS}
1373 includes : ${INCLUDES} ${SNMP_INCLUDES}
1374 linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
1375 state file directory : ${quagga_statedir}
1376 config file directory : `eval echo \`echo ${sysconfdir}\``
1377 example directory : `eval echo \`echo ${exampledir}\``
1378 user to run as : ${enable_user}
1379 group to run as : ${enable_group}
1380 group for vty sockets : ${enable_vty_group}
1381 config file mask : ${enable_configfile_mask}
1382 log file mask : ${enable_logfile_mask}
1384 The above user and group must have read/write access to the state file
1385 directory and to the config files in the config file directory.