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>
11 AC_INIT(Quagga, 0.99.12, [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 GNU awk is required for lib/memtype.h made by memtypes.awk.
25 dnl BSD awk complains: awk: gensub doesn't support backreferences (subst "\1")
26 AC_CHECK_PROG([GAWK],[gawk],[gawk],[/bin/false])
27 AC_ARG_VAR([GAWK],[GNU AWK])
29 dnl default is to match previous behavior
30 exampledir=${sysconfdir}
31 AC_ARG_ENABLE([exampledir],
32 AC_HELP_STRING([--enable-exampledir],
33 [specify alternate directory for examples]),
34 exampledir="$enableval",)
35 dnl XXX add --exampledir to autoconf standard directory list somehow
38 dnl default is to match previous behavior
41 AC_ARG_ENABLE([pkgsrcrcdir],
42 AC_HELP_STRING([--enable-pkgsrcrcdir],
43 [specify directory for rc.d scripts]),
44 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
45 dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
53 [ --with-cflags Set CFLAGS for use in compilation.])
54 if test "x$with_cflags" != "x" ; then
55 CFLAGS="$with_cflags" ; cflags_specified=yes ;
56 elif test -n "$CFLAGS" ; then
57 cflags_specified=yes ;
60 dnl --------------------
61 dnl Check CC and friends
62 dnl --------------------
69 dnl autoconf 2.59 appears not to support AC_PROG_SED
71 AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
73 dnl ------------------------------------------------------------------
74 dnl Intel compiler check. Although Intel tries really hard to make icc
75 dnl look like gcc, there are some differences. It's very verbose with
76 dnl -Wall and it doesn't support the individual -W options.
77 dnl ------------------------------------------------------------------
78 if test "x${GCC}" = "xyes" ; then
80 AC_MSG_CHECKING([whether we are using the Intel compiler])
81 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
82 [AC_MSG_RESULT([no])],
87 AC_MSG_CHECKING([whether we are using SunPro compiler])
88 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
89 [AC_MSG_RESULT([no])],
95 dnl ---------------------------------------------
96 dnl If CLFAGS doesn\'t exist set default value
97 dnl AC_PROG_CC will have set minimal default
98 dnl already, eg "-O2 -g" for gcc, "-g" for others
99 dnl (Wall is gcc specific... have to make sure
100 dnl gcc is being used before setting it)
102 dnl Intel icc 8.0 also sets __GNUC__,
103 dnl but doesn't support all these fancy -W options.
104 dnl Intel compiler warnings we ignore:
105 dnl 279: controlling expression is constant.
106 dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
107 dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
109 dnl 981: operands are evaluated in unspecified order.
111 dnl Sun Studio 10 / SunPro 5.7 is also supported,
112 dnl so lets set some sane CFLAGS for it.
113 dnl ---------------------------------------------
115 AC_MSG_CHECKING([whether to set a default CFLAGS])
116 if test "x${cflags_specified}" = "x" ; then
119 CFLAGS="-Os -g -Wall -wd 279,869,981"
120 AC_MSG_RESULT([Intel default])
123 CFLAGS="-Os -fno-omit-frame-pointer -g -std=gnu99 -Wall"
124 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
125 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
126 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
127 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
128 # TODO: conditionally addd -Wpacked if handled
129 AC_MSG_RESULT([gcc default])
132 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
133 AC_MSG_RESULT([SunPro default])
136 AC_MSG_RESULT([unknown compiler])
140 AC_MSG_RESULT([CFLAGS supplied by user])
149 AC_CHECK_TOOL(AR, ar)
151 dnl ---------------------------
152 dnl We, perhaps unfortunately,
153 dnl depend on GNU Make specific
155 dnl Give the user a warning if
157 dnl ---------------------------
158 AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
159 [quagga_cv_gnu_make=no
160 if ${MAKE-make} --version 2>/dev/null | \
161 grep '^GNU Make ' >/dev/null ; then
162 quagga_cv_gnu_make=yes;
167 dnl -----------------
168 dnl System extensions
169 dnl -----------------
178 dnl ----------------------
179 dnl Packages configuration
180 dnl ----------------------
182 [ --enable-vtysh include integrated vty shell for Quagga])
184 [ --disable-ipv6 turn off IPv6 related features and daemons])
186 [ --disable-zebra do not build zebra daemon])
188 [ --disable-bgpd do not build bgpd])
190 [ --disable-ripd do not build ripd])
191 AC_ARG_ENABLE(ripngd,
192 [ --disable-ripngd do not build ripngd])
194 [ --disable-ospfd do not build ospfd])
195 AC_ARG_ENABLE(ospf6d,
196 [ --disable-ospf6d do not build ospf6d])
197 AC_ARG_ENABLE(watchquagga,
198 [ --disable-watchquagga do not build watchquagga])
200 [ --enable-isisd build isisd])
201 AC_ARG_ENABLE(solaris,
202 [ --enable-solaris build solaris])
203 AC_ARG_ENABLE(bgp-announce,
204 [ --disable-bgp-announce, turn off BGP route announcement])
205 AC_ARG_ENABLE(netlink,
206 [ --enable-netlink force to use Linux netlink interface])
207 AC_ARG_ENABLE(broken-aliases,
208 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
210 [ --without-crypto do not use libcrypto in SNMP])
212 [ --enable-snmp enable SNMP support])
214 [ --with-libpam use libpam for PAM support in vtysh])
215 AC_ARG_ENABLE(tcp-zebra,
216 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
217 AC_ARG_ENABLE(opaque-lsa,
218 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
219 AC_ARG_ENABLE(ospfapi,
220 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
221 (this is the default if --enable-opaque-lsa is not set)])
222 AC_ARG_ENABLE(ospfclient,
223 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
224 (this is the default if --disable-ospfapi is set)])
225 AC_ARG_ENABLE(ospf-te,
226 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
227 AC_ARG_ENABLE(multipath,
228 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
230 AC_HELP_STRING([--enable-user=user], [user to run Quagga suite as (default quagga)]))
232 AC_HELP_STRING([--enable-group=group], [group to run Quagga suite as (default quagga)]))
233 AC_ARG_ENABLE(vty_group,
234 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
235 AC_ARG_ENABLE(configfile_mask,
236 [ --enable-configfile-mask=ARG set mask for config files])
237 AC_ARG_ENABLE(logfile_mask,
238 [ --enable-logfile-mask=ARG set mask for log files])
241 [ --disable-rtadv disable IPV6 router advertisement feature])
243 [ --enable-irdp enable IRDP server support in zebra])
244 AC_ARG_ENABLE(isis_topology,
245 [ --enable-isis-topology enable IS-IS topology generator])
246 AC_ARG_ENABLE(capabilities,
247 [ --disable-capabilities disable using POSIX capabilities])
248 AC_ARG_ENABLE(gcc_ultra_verbose,
249 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
250 AC_ARG_ENABLE(linux24_tcp_md5,
251 [ --enable-linux24-tcp-md5 enable support for old, Linux-2.4 RFC2385 patch])
252 AC_ARG_ENABLE(gcc-rdynamic,
253 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
254 AC_ARG_ENABLE(time-check,
255 [ --disable-time-check disable slow thread warning messages])
257 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
258 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
259 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
260 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
261 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
264 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
265 LDFLAGS="${LDFLAGS} -rdynamic"
268 if test x"${enable_time_check}" != x"no" ; then
269 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
270 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
272 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
276 if test "${enable_broken_aliases}" = "yes"; then
277 if test "${enable_netlink}" = "yes"
279 AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases])
281 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
285 if test "${enable_tcp_zebra}" = "yes"; then
286 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
289 if test "${enable_opaque_lsa}" = "yes"; then
290 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
293 if test "${enable_ospf_te}" = "yes"; then
294 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
295 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
298 if test "${enable_linux24_tcp_md5}" = "yes"; then
299 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
302 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
303 if test "${enable_rtadv}" != "no"; then
305 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
310 if test "${enable_irdp}" = "yes"; then
311 AC_DEFINE(HAVE_IRDP,, IRDP )
314 if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
315 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
316 ISIS_TOPOLOGY_INCLUDES="-I./topology"
317 ISIS_TOPOLOGY_DIR="topology"
318 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
321 AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
322 AC_SUBST(ISIS_TOPOLOGY_DIR)
323 AC_SUBST(ISIS_TOPOLOGY_LIB)
325 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
327 elif test "${enable_user}" = "no"; then
331 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
332 enable_group="quagga"
333 elif test "${enable_group}" = "no"; then
337 if test x"${enable_vty_group}" = x"yes" ; then
338 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
339 elif test x"${enable_vty_group}" != x""; then
340 if test x"${enable_vty_group}" != x"no"; then
341 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
344 AC_SUBST([enable_user])
345 AC_SUBST([enable_group])
346 AC_SUBST([enable_vty_group])
347 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
348 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
350 enable_configfile_mask=${enable_configfile_mask:-0600}
351 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
353 enable_logfile_mask=${enable_logfile_mask:-0600}
354 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
358 case "${enable_multipath}" in
360 MULTIPATH_NUM="${enable_multipath}"
365 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
369 AC_SUBST(MULTIPATH_NUM)
371 dnl ------------------------------------
372 dnl Check C keywords and standard types
373 dnl ------------------------------------
388 dnl -------------------------
389 dnl Check other header files.
390 dnl -------------------------
391 AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
392 sys/types.h linux/version.h netdb.h asm/types.h \
393 sys/param.h limits.h signal.h libutil.h \
394 sys/socket.h netinet/in.h])
396 dnl Utility macro to avoid retyping includes all the time
397 m4_define([QUAGGA_INCLUDES],
400 #define __EXTENSIONS__
412 # include <sys/types.h>
414 /* sys/conf.h depends on param.h on FBSD at least */
416 # include <sys/param.h>
418 /* Required for MAXSIG */
422 #if HAVE_SYS_SOCKET_H
423 # include <sys/socket.h>
425 #if HAVE_NETINET_IN_H
426 # include <netinet/in.h>
430 AC_CHECK_HEADERS([sys/un.h net/if.h netinet/in_systm.h netinet/in_var.h \
431 net/if_dl.h net/if_var.h net/netopt.h net/route.h \
432 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
433 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
434 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
435 [], [], QUAGGA_INCLUDES)
437 AC_CHECK_HEADERS([ucontext.h], [], [],
440 #endif /* __USE_GNU */
444 m4_define([QUAGGA_INCLUDES],
452 #if HAVE_NETINET_IN_SYSTM_H
453 # include <netinet/in_systm.h>
455 #if HAVE_NETINET_IN_VAR_H
456 # include <netinet/in_var.h>
459 # include <net/if_dl.h>
461 #if HAVE_NET_IF_VAR_H
462 # include <net/if_var.h>
464 #if HAVE_NET_NETOPT_H
465 # include <net/netopt.h>
468 # include <net/route.h>
471 # include <inet/nd.h>
474 # include <arpa/inet.h>
476 /* Required for IDRP */
477 #if HAVE_NETINET_IP_ICMP_H
478 # include <netinet/ip_icmp.h>
482 dnl V6 headers are checked below, after we check for v6
484 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
486 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
488 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
489 AC_DEFINE(SUNOS_5, 1, SunOS 5)
490 AC_CHECK_LIB(xnet, main)
494 | [*-sunos5.1[0-9]] \
495 | [*-sunos5.1[0-9].[0-9]] \
496 | [*-solaris2.[8-9]] \
497 | [*-solaris2.1[0-9]] \
498 | [*-solaris2.1[0-9].[0-9]])
500 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
501 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
502 AC_CHECK_LIB(socket, main)
503 AC_CHECK_LIB(nsl, main)
504 AC_CHECK_LIB(umem, main)
505 AC_CHECK_FUNCS([printstack],
506 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
507 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
511 *-sunos5* | *-solaris2*)
512 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
513 AC_CHECK_LIB(socket, main)
514 AC_CHECK_LIB(nsl, main)
519 AC_DEFINE(GNU_LINUX,,GNU Linux)
522 AC_CHECK_LIB(nsl, gethostbyname)
523 AC_CHECK_LIB(socket, socket)
527 AC_DEFINE(OPEN_BSD,,OpenBSD)
531 OTHER_METHOD="mtu_kvm.o"
532 AC_CHECK_LIB(kvm, main)
536 AC_DEFINE(IRIX_65,,IRIX 6.5)
540 dnl ---------------------
541 dnl Integrated VTY option
542 dnl ---------------------
543 case "${enable_vtysh}" in
544 "yes") VTYSH="vtysh";
545 AC_DEFINE(VTYSH,,VTY shell)
546 AC_PATH_PROG(PERL, perl)
547 dnl Vtysh uses libreadline, which looks for termcap functions at
548 dnl configure time. We follow readlines search order.
549 dnl The required procedures are in libtermcap on NetBSD, in
550 dnl [TODO] on Linux, and in [TODO] on Solaris.
551 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
552 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
553 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
554 [AC_CHECK_LIB(ncurses, tputs,
555 LIBREADLINE="$LIBREADLINE -lncurses")]
559 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
561 if test $ac_cv_lib_readline_main = no; then
562 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
564 AC_CHECK_HEADER(readline/history.h)
565 if test $ac_cv_header_readline_history_h = no;then
566 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
568 AC_CHECK_LIB(readline, rl_completion_matches,
569 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
570 if test $ac_cv_lib_readline_rl_completion_matches = no; then
571 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
577 AC_SUBST(LIBREADLINE)
582 if test "$with_libpam" = "yes"; then
583 AC_CHECK_HEADER([security/pam_misc.h],
584 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
585 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
586 pam_conv_func="misc_conv"
589 AC_CHECK_HEADER([security/openpam.h],
590 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
591 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
592 pam_conv_func="openpam_ttyconv"
595 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
596 AC_MSG_WARN([*** pam support will not be built ***])
601 if test "$with_libpam" = "yes"; then
602 dnl took this test from proftpds configure.in and suited to our needs
603 dnl -------------------------------------------------------------------------
605 dnl This next check looks funky due to a linker problem with some versions
606 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
607 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
608 dnl with RedHat 6.2 and Debian 2.2 or better.
609 AC_CHECK_LIB(pam, pam_start,
610 [AC_CHECK_LIB(pam, $pam_conv_func,
611 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
613 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
614 LIBPAM="-lpam -lpam_misc"]
618 [AC_CHECK_LIB(pam, pam_end,
619 [AC_CHECK_LIB(pam, $pam_conv_func,
620 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
621 LIBPAM="-lpam -ldl"],
622 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
623 LIBPAM="-lpam -ldl -lpam_misc"]
625 ],AC_MSG_WARN([*** pam support will not be built ***]),
632 dnl -------------------------------
633 dnl Endian-ness check
634 dnl -------------------------------
637 dnl -------------------------------
638 dnl check the size in byte of the C
639 dnl -------------------------------
640 dnl AC_CHECK_SIZEOF(char)
641 dnl AC_CHECK_SIZEOF(int)
642 dnl AC_CHECK_SIZEOF(short)
643 dnl AC_CHECK_SIZEOF(long)
645 dnl ----------------------------
646 dnl check existance of functions
647 dnl ----------------------------
657 AC_FUNC_SELECT_ARGTYPES
659 dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
660 dnl can lead to strange side effects. So we just check for strnlen
661 dnl directly, see below.
662 dnl AC_FUNC_STRNLENdnl
665 dnl -------------------------------
666 dnl bgpd needs pow() and hence libm
667 dnl -------------------------------
669 AC_CHECK_HEADER([math.h],
670 [AC_CHECK_LIB([m], [pow],
673 AC_DEFINE(HAVE_LIBM,, Have libm)
674 AC_CHECK_FUNCS(pow,[],[LIBM=""])
677 if test x"$LIBM" = x ; then
678 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
686 AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
687 inet_ntoa inet_aton strnlen \
688 memchr memmove memset select socket \
689 strcasecmp strchr strcspn strdup strerror \
690 strncasecmp strndup strrchr strspn strstr \
691 strtol strtoul strlcat strlcpy \
692 daemon snprintf vsnprintf \
693 if_nametoindex if_indextoname getifaddrs \
696 AC_CHECK_FUNCS(setproctitle, ,
697 [AC_CHECK_LIB(util, setproctitle,
699 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
705 dnl ------------------------------------
706 dnl Determine routing get and set method
707 dnl ------------------------------------
708 AC_MSG_CHECKING(zebra between kernel interface method)
709 if test x"$opsys" = x"gnu-linux"; then
710 if test "${enable_netlink}" = "yes";then
711 AC_MSG_RESULT(netlink)
712 RT_METHOD=rt_netlink.o
713 AC_DEFINE(HAVE_NETLINK,,netlink)
715 elif test "${enable_netlink}" = "no"; then
720 AC_MSG_RESULT(netlink)
721 RT_METHOD=rt_netlink.o
722 AC_DEFINE(HAVE_NETLINK,,netlink)
725 elif test x"$opsys" = x"sol2-6";then
726 AC_MSG_RESULT(Route socket)
727 KERNEL_METHOD="kernel_socket.o"
728 RT_METHOD="rt_socket.o"
729 elif test x"$opsys" = x"sol8";then
730 AC_MSG_RESULT(Route socket)
731 KERNEL_METHOD="kernel_socket.o"
732 RT_METHOD="rt_socket.o"
733 elif test "$opsys" = "irix" ; then
734 AC_MSG_RESULT(Route socket)
735 KERNEL_METHOD="kernel_socket.o"
736 RT_METHOD="rt_socket.o"
738 AC_TRY_RUN([#include <errno.h>
739 #include <sys/types.h>
740 #include <sys/socket.h>
746 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
747 if (ac_sock < 0 && errno == EINVAL)
751 [KERNEL_METHOD=kernel_socket.o
752 RT_METHOD=rt_socket.o
753 AC_MSG_RESULT(socket)],
754 [RT_METHOD=rt_ioctl.o
755 AC_MSG_RESULT(ioctl)],
756 [KERNEL_METHOD=kernel_socket.o
757 RT_METHOD=rt_socket.o
758 AC_MSG_RESULT(socket)])
761 AC_SUBST(KERNEL_METHOD)
762 AC_SUBST(OTHER_METHOD)
764 dnl --------------------------
765 dnl Determine IS-IS I/O method
766 dnl --------------------------
767 AC_CHECK_HEADER(net/bpf.h)
768 AC_CHECK_HEADER(sys/dlpi.h)
769 AC_MSG_CHECKING(zebra IS-IS I/O method)
770 if test x"$opsys" = x"gnu-linux"; then
771 AC_MSG_RESULT(pfpacket)
772 ISIS_METHOD=isis_pfpacket.o
773 elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
775 ISIS_METHOD="isis_dlpi.o"
777 if test $ac_cv_header_net_bpf_h = no; then
778 if test $ac_cv_header_sys_dlpi_h = no; then
780 AC_MSG_WARN([*** IS-IS support will not be built ***])
785 ISIS_METHOD="isis_dlpi.o"
788 ISIS_METHOD="isis_bpf.o"
791 AC_SUBST(ISIS_METHOD)
793 dnl ------------------------------------
794 dnl check for broken CMSG_FIRSTHDR macro
795 dnl ------------------------------------
796 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
797 AC_RUN_IFELSE([AC_LANG_SOURCE([[
800 #define __EXTENSIONS__
805 #ifdef HAVE_SYS_TYPES_H
806 #include <sys/types.h>
808 #ifdef HAVE_SYS_SOCKET_H
809 #include <sys/socket.h>
817 msg.msg_control = buf;
818 msg.msg_controllen = 0;
820 if (CMSG_FIRSTHDR(&msg) != NULL)
823 }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
824 [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
826 dnl ------------------------------
827 dnl check kernel route read method
828 dnl ------------------------------
829 AC_CACHE_CHECK(route read method check, zebra_rtread,
830 [if test "$netlink" = yes; then
831 RTREAD_METHOD="rtread_netlink.o"
832 zebra_rtread="netlink"
834 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
836 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
838 case $zebra_rtread in
839 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
840 zebra_rtread="proc";;
843 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
844 zebra_rtread="sysctl";;
845 *) RTREAD_METHOD="rtread_getmsg.o"
846 zebra_rtread="getmsg";;
848 *) RTREAD_METHOD="rtread_sysctl.o"
849 zebra_rtread="sysctl";;
852 AC_SUBST(RTREAD_METHOD)
854 dnl -----------------------------
855 dnl check interface lookup method
856 dnl -----------------------------
858 AC_MSG_CHECKING(interface looking up method)
859 if test "$netlink" = yes; then
860 AC_MSG_RESULT(netlink)
861 IF_METHOD=if_netlink.o
862 elif test "$opsys" = "sol2-6";then
863 AC_MSG_RESULT(Solaris GIF)
865 elif test "$opsys" = "sol8";then
866 AC_MSG_RESULT(Solaris GLIF)
867 IF_METHOD=if_ioctl_solaris.o
868 IOCTL_METHOD=ioctl_solaris.o
869 elif test "$opsys" = "irix" ; then
872 elif test "$opsys" = "openbsd";then
873 AC_MSG_RESULT(openbsd)
875 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
876 AC_MSG_RESULT(sysctl)
877 IF_METHOD=if_sysctl.o
878 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
884 AC_SUBST(IOCTL_METHOD)
886 dnl ---------------------------------------------------------------
887 dnl figure out how to specify an interface in multicast sockets API
888 dnl ---------------------------------------------------------------
889 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
891 AC_MSG_CHECKING([for BSD struct ip_mreq hack])
892 AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
893 #include <sys/param.h>
894 #endif],[#if (defined(__FreeBSD__) && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
897 #error No support for BSD struct ip_mreq hack detected
898 #endif],[AC_MSG_RESULT(yes)
899 AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
902 dnl ---------------------------------------------------------------
903 dnl figure out how to check link-state
904 dnl ---------------------------------------------------------------
905 AC_CHECK_HEADER([net/if.h],
906 [AC_CHECK_HEADER( [net/if_media.h],
907 [m4_define([LINK_DETECT_INCLUDES],
909 [#include <net/if_media.h>
911 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
912 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
913 [], LINK_DETECT_INCLUDES)],
916 [], QUAGGA_INCLUDES )
918 dnl ------------------------
919 dnl TCP_MD5SIG socket option
920 dnl ------------------------
922 AC_CHECK_HEADER([netinet/tcp.h],
923 [m4_define([MD5_INCLUDES],
925 [#include <netinet/tcp.h>
927 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
930 if test $ac_cv_have_decl_TCP_MD5SIG = no; then
931 AC_CHECK_HEADER([linux/tcp.h],
932 [m4_define([MD5_INCLUDES],
934 [#include <linux/tcp.h>
936 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
939 dnl -----------------------
940 dnl check proc file system.
941 dnl -----------------------
942 if test "$netlink" != yes; then
943 if test -r /proc/net/dev; then
944 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
947 if test -r /proc/net/if_inet6; then
948 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
954 dnl -----------------------------
955 dnl check ipforward detect method
956 dnl -----------------------------
957 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
958 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
960 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
962 case $zebra_ipforward_path in
963 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
964 zebra_ipforward_path="proc";;
967 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
968 zebra_ipforward_path="ews";;
969 *-freebsd*) IPFORWARD=ipforward_sysctl.o
970 zebra_ipforward_path="sysctl";;
971 *) IPFORWARD=ipforward_solaris.o
972 zebra_ipforward_path="solaris";;
974 *) IPFORWARD=ipforward_sysctl.o
975 zebra_ipforward_path="sysctl";;
979 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
984 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
985 if test "${enable_ipv6}" = "no"; then
986 AC_MSG_RESULT(disabled)
991 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
993 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
994 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
998 AC_MSG_RESULT(INRIA IPv6)
1002 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1004 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
1005 AC_DEFINE(KAME,1,KAME IPv6)
1008 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
1009 LIB_IPV6="-L/usr/local/v6/lib -linet6"
1012 dnl -------------------------
1014 dnl default host check
1015 dnl It is not used by Kheops
1016 dnl -------------------------
1017 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
1019 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
1020 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
1021 AC_DEFINE(KAME,1,KAME IPv6 stack)
1024 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
1025 LIB_IPV6="-L/usr/local/v6/lib -linet6"
1027 AC_MSG_RESULT(MUSICA)
1031 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1033 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
1034 AC_DEFINE(NRL,1,NRL)
1037 if test x"$opsys" = x"bsdi";then
1038 AC_DEFINE(BSDI_NRL,,BSDI)
1039 AC_MSG_RESULT(BSDI_NRL)
1043 dnl ------------------------------------
1044 dnl Solaris 9, 10 and potentially higher
1045 dnl ------------------------------------
1046 elif test x"$opsys" = x"sol8"; then
1048 AC_DEFINE(HAVE_IPV6, 1, IPv6)
1049 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
1052 AC_MSG_RESULT(Solaris IPv6)
1056 elif test "${enable_ipv6}" = "yes"; then
1058 #include <linux/version.h>
1059 /* 2.1.128 or later */
1060 #if LINUX_VERSION_CODE >= 0x020180
1064 zebra_cv_linux_ipv6=yes
1065 AC_MSG_RESULT(Linux IPv6)])
1067 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
1070 zebra_cv_linux_ipv6=yes
1071 AC_MSG_RESULT(Linux IPv6)
1075 if test "$zebra_cv_linux_ipv6" = "yes";then
1076 AC_MSG_CHECKING(whether libc has IPv6 support)
1077 AC_TRY_LINK([#include <netinet/in.h>
1078 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
1081 zebra_cv_linux_ipv6=yes],
1084 zebra_cv_linux_ipv6=no])
1087 if test "$zebra_cv_linux_ipv6" = "yes";then
1088 AC_MSG_CHECKING(for GNU libc >= 2.1)
1089 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
1091 #include <features.h>
1092 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
1096 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
1097 AC_MSG_RESULT(yes)],
1102 if test "$glibc" != "yes"; then
1103 INCLUDES="-I/usr/inet6/include"
1104 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
1105 LIB_IPV6="-L/usr/inet6/lib -linet6"
1110 dnl -----------------------
1111 dnl Set IPv6 related values
1112 dnl -----------------------
1113 LIBS="$LIB_IPV6 $LIBS"
1116 if test x"$RIPNGD" = x""; then
1117 AC_MSG_RESULT(IPv4 only)
1121 dnl ------------------
1122 dnl IPv6 header checks
1123 dnl ------------------
1124 if test "x${zebra_cv_ipv6}" = "xyes"; then
1125 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
1126 netinet6/in6_var.h netinet6/nd6.h], [], [],
1130 m4_define([QUAGGA_INCLUDES],dnl
1132 [#if HAVE_NETINET6_IN6_H
1133 #include <netinet6/in6.h>
1135 #if HAVE_NETINET_IN6_VAR_H
1136 #include <netinet/in6_var.h>
1138 #if HAVE_NETINET_ICMP6_H
1139 # include <netinet/icmp6.h>
1141 #if HAVE_NETINET6_IN6_VAR_H
1142 # include <netinet6/in6_var.h>
1144 #if HAVE_NETINET6_ND6_H
1145 # include <netinet6/nd6.h>
1149 dnl --------------------
1150 dnl Daemon disable check
1151 dnl --------------------
1152 if test "${enable_zebra}" = "no";then
1158 if test "${enable_bgpd}" = "no";then
1164 if test "${enable_ripd}" = "no";then
1170 if test "${enable_ospfd}" = "no";then
1176 if test "${enable_watchquagga}" = "no";then
1179 WATCHQUAGGA="watchquagga"
1183 if test "${enable_opaque_lsa}" = "yes"; then
1184 if test "${enable_ospfapi}" != "no";then
1185 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
1187 if test "${enable_ospfclient}" != "no";then
1188 OSPFCLIENT="ospfclient"
1194 case "${enable_ripngd}" in
1195 "yes") RIPNGD="ripngd";;
1200 case "${enable_ospf6d}" in
1201 "yes") OSPF6D="ospf6d";;
1206 case "${enable_isisd}" in
1207 "yes") ISISD="isisd";;
1212 # XXX Perhaps auto-enable on Solaris, but that's messy for cross builds.
1213 case "${enable_solaris}" in
1214 "yes") SOLARIS="solaris";;
1219 if test "${enable_bgp_announce}" = "no";then
1220 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1222 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
1231 AC_SUBST(WATCHQUAGGA)
1237 AC_SUBST(OSPFCLIENT)
1239 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1240 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1241 AC_CHECK_LIB(crypt, crypt)
1242 AC_CHECK_LIB(resolv, res_init)
1244 dnl ---------------------------------------------------
1245 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1246 dnl ---------------------------------------------------
1247 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1248 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1249 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
1251 dnl ---------------------------
1252 dnl check system has GNU regexp
1253 dnl ---------------------------
1254 dnl AC_MSG_CHECKING(whether system has GNU regex)
1255 AC_CHECK_LIB(c, regexec,
1256 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1258 [LIB_REGEX="regex.o"])
1261 dnl ------------------
1262 dnl check Net-SNMP library
1263 dnl ------------------
1264 if test "${enable_snmp}" = "yes"; then
1265 if test "$with_crypto" != "no"; then
1266 LIBS="${LIBS} -lcrypto";
1268 AC_CHECK_LIB(netsnmp, asn_parse_int,
1269 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1270 AC_DEFINE(HAVE_SNMP,,SNMP)
1271 LIBS="${LIBS} -lnetsnmp"],
1272 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1274 AC_CHECK_HEADER([net-snmp/net-snmp-config.h],
1276 [AC_MSG_ERROR([--enable-snmp given, but cannot find net-snmp-config.h])],
1278 AC_SUBST(SNMP_INCLUDES)
1281 dnl ---------------------------
1282 dnl sockaddr and netinet checks
1283 dnl ---------------------------
1284 AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1285 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
1287 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1288 struct nd_opt_adv_interval, struct rt_addrinfo,
1289 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
1290 [], [], QUAGGA_INCLUDES)
1292 AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1293 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1294 struct sockaddr_in6.sin6_scope_id,
1295 struct if6_aliasreq.ifra_lifetime,
1296 struct nd_opt_adv_interval.nd_opt_ai_type],
1297 [], [], QUAGGA_INCLUDES)
1299 dnl ---------------------------
1300 dnl IRDP/pktinfo/icmphdr checks
1301 dnl ---------------------------
1302 AC_CHECK_TYPES([struct in_pktinfo],
1303 [AC_CHECK_TYPES([struct icmphdr],
1304 [if test "${enable_irdp}" != "no"; then
1305 AC_DEFINE(HAVE_IRDP,, IRDP)
1307 [if test "${enable_irdp}" = "yes"; then
1308 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1309 fi], [QUAGGA_INCLUDES])],
1310 [if test "${enable_irdp}" = "yes"; then
1311 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1312 fi], [QUAGGA_INCLUDES])
1314 dnl --------------------------------------
1315 dnl checking for getrusage struct and call
1316 dnl --------------------------------------
1317 AC_MSG_CHECKING(whether getrusage is available)
1318 AC_TRY_COMPILE([#include <sys/resource.h>
1319 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1321 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1324 dnl -------------------
1325 dnl capabilities checks
1326 dnl -------------------
1327 if test "${enable_capabilities}" != "no"; then
1328 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1329 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1331 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1332 quagga_ac_keepcaps="yes"],
1335 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1336 AC_CHECK_HEADERS(sys/capability.h)
1338 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1339 AC_CHECK_LIB(cap, cap_init,
1340 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1342 quagga_ac_lcaps="yes"]
1345 AC_CHECK_HEADERS(priv.h,
1346 [AC_MSG_CHECKING(Solaris style privileges are available)
1347 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1349 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1350 quagga_ac_scaps="yes"],
1356 if test x"${quagga_ac_scaps}" = x"yes" \
1357 -o x"${quagga_ac_lcaps}" = x"yes"; then
1358 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
1363 dnl ---------------------------
1364 dnl check for glibc 'backtrace'
1365 dnl ---------------------------
1366 if test "${glibc}" = "yes"; then
1367 AC_CHECK_HEADER([execinfo.h],
1368 [AC_CHECK_FUNC([backtrace],
1369 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1370 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1375 dnl -----------------------------------------
1376 dnl check for malloc mallinfo struct and call
1377 dnl this must try and link using LIBS, in
1378 dnl order to check no alternative allocator
1379 dnl has been specified, which might not provide
1380 dnl mallinfo, e.g. such as Umem on Solaris.
1381 dnl -----------------------------------------
1382 AC_CHECK_HEADER([malloc.h],
1383 [AC_MSG_CHECKING(whether mallinfo is available)
1384 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1385 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1387 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1390 ], [], QUAGGA_INCLUDES)
1395 CONFDATE=`date '+%Y%m%d'`
1398 dnl Conditionally enable PIE support for GNU toolchains.
1399 AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
1400 if test "$enable_pie" != "no"; then
1401 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1403 save_LDFLAGS=$LDFLAGS
1404 CFLAGS="$CFLAGS -fPIE"
1405 LDFLAGS="$LDFLAGS -pie"
1406 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1407 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1410 LDFLAGS=$save_LDFLAGS
1412 if test "$ap_cv_cc_pie" = "yes"; then
1421 dnl ------------------------------
1422 dnl set paths for state directory
1423 dnl ------------------------------
1424 if test "${prefix}" = "NONE"; then
1425 quagga_statedir_prefix="";
1427 quagga_statedir_prefix=${prefix}
1429 if test "${localstatedir}" = '${prefix}/var'; then
1430 AC_CACHE_CHECK(state directory,ac_statedir,
1431 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1432 ${quagga_statedir_prefix}/var/adm dnl
1433 ${quagga_statedir_prefix}/etc dnl
1439 test -d $QUAGGA_STATE_DIR && break
1441 quagga_statedir=$QUAGGA_STATE_DIR])
1443 quagga_statedir=${localstatedir}
1444 AC_MSG_CHECKING(directory to use for state file)
1445 AC_MSG_RESULT(${quagga_statedir})
1446 AC_SUBST(quagga_statedir)
1448 if test $quagga_statedir = "/dev/null"; then
1449 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1452 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1453 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1454 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1455 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1456 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1457 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1458 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1459 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1460 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1461 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1462 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1463 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1464 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1465 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1466 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1467 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1468 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1470 dnl -------------------------------
1471 dnl Quagga sources should always be
1472 dnl current wrt interfaces. Dont
1473 dnl allow deprecated interfaces to
1475 dnl -------------------------------
1476 AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1478 dnl ---------------------------
1479 dnl Check htonl works correctly
1480 dnl ---------------------------
1481 AC_MSG_CHECKING(for working htonl)
1482 AC_CACHE_VAL(ac_cv_htonl_works,
1483 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1484 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1487 AC_MSG_RESULT($ac_cv_htonl_works)
1489 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1490 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1491 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1492 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1497 isisd/topology/Makefile
1498 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1499 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1500 AC_CONFIG_FILES([solaris/Makefile])
1502 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1503 ## Hack, but working solution to avoid rebuilding of quagga.info.
1504 ## It's already in CVS until texinfo 4.7 is more common.
1508 Quagga configuration
1509 --------------------
1510 quagga version : ${PACKAGE_VERSION}
1511 host operationg system : ${host_os}
1512 source code location : ${srcdir}
1514 compiler flags : ${CFLAGS}
1516 includes : ${INCLUDES} ${SNMP_INCLUDES}
1517 linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
1518 state file directory : ${quagga_statedir}
1519 config file directory : `eval echo \`echo ${sysconfdir}\``
1520 example directory : `eval echo \`echo ${exampledir}\``
1521 user to run as : ${enable_user}
1522 group to run as : ${enable_group}
1523 group for vty sockets : ${enable_vty_group}
1524 config file mask : ${enable_configfile_mask}
1525 log file mask : ${enable_logfile_mask}
1527 The above user and group must have read/write access to the state file
1528 directory and to the config files in the config file directory."
1530 if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1531 Warning: The ${MAKE-make} programme detected, either in your path or
1532 via the MAKE variable, is not GNU Make. GNU make may be installed as
1533 gmake on some systems. and is required to complete a build of Quagga