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.10, [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(gcc-rdynamic,
251 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
252 AC_ARG_ENABLE(time-check,
253 [ --disable-time-check disable slow thread warning messages])
255 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
256 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
257 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
258 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
259 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
262 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
263 LDFLAGS="${LDFLAGS} -rdynamic"
266 if test x"${enable_time_check}" != x"no" ; then
267 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
268 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
270 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
274 if test "${enable_broken_aliases}" = "yes"; then
275 if test "${enable_netlink}" = "yes"
277 AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases])
279 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
283 if test "${enable_tcp_zebra}" = "yes"; then
284 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
287 if test "${enable_opaque_lsa}" = "yes"; then
288 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
291 if test "${enable_ospf_te}" = "yes"; then
292 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
293 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
296 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
297 if test "${enable_rtadv}" != "no"; then
299 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
304 if test "${enable_irdp}" = "yes"; then
305 AC_DEFINE(HAVE_IRDP,, IRDP )
308 if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
309 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
310 ISIS_TOPOLOGY_INCLUDES="-I./topology"
311 ISIS_TOPOLOGY_DIR="topology"
312 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
315 AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
316 AC_SUBST(ISIS_TOPOLOGY_DIR)
317 AC_SUBST(ISIS_TOPOLOGY_LIB)
319 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
321 elif test "${enable_user}" = "no"; then
325 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
326 enable_group="quagga"
327 elif test "${enable_group}" = "no"; then
331 if test x"${enable_vty_group}" = x"yes" ; then
332 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
333 elif test x"${enable_vty_group}" != x""; then
334 if test x"${enable_vty_group}" != x"no"; then
335 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
338 AC_SUBST([enable_user])
339 AC_SUBST([enable_group])
340 AC_SUBST([enable_vty_group])
341 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
342 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
344 enable_configfile_mask=${enable_configfile_mask:-0600}
345 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
347 enable_logfile_mask=${enable_logfile_mask:-0600}
348 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
352 case "${enable_multipath}" in
354 MULTIPATH_NUM="${enable_multipath}"
359 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
363 AC_SUBST(MULTIPATH_NUM)
365 dnl ------------------------------------
366 dnl Check C keywords and standard types
367 dnl ------------------------------------
382 dnl -------------------------
383 dnl Check other header files.
384 dnl -------------------------
385 AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
386 sys/types.h linux/version.h netdb.h asm/types.h \
387 sys/param.h limits.h signal.h libutil.h \
388 sys/socket.h netinet/in.h])
390 dnl Utility macro to avoid retyping includes all the time
391 m4_define([QUAGGA_INCLUDES],
394 #define __EXTENSIONS__
406 # include <sys/types.h>
408 /* sys/conf.h depends on param.h on FBSD at least */
410 # include <sys/param.h>
412 /* Required for MAXSIG */
416 #if HAVE_SYS_SOCKET_H
417 # include <sys/socket.h>
419 #if HAVE_NETINET_IN_H
420 # include <netinet/in.h>
424 AC_CHECK_HEADERS([sys/un.h net/if.h netinet/in_systm.h netinet/in_var.h \
425 net/if_dl.h net/if_var.h net/netopt.h net/route.h \
426 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
427 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
428 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
429 [], [], QUAGGA_INCLUDES)
431 AC_CHECK_HEADERS([ucontext.h], [], [],
434 #endif /* __USE_GNU */
438 m4_define([QUAGGA_INCLUDES],
446 #if HAVE_NETINET_IN_SYSTM_H
447 # include <netinet/in_systm.h>
449 #if HAVE_NETINET_IN_VAR_H
450 # include <netinet/in_var.h>
453 # include <net/if_dl.h>
455 #if HAVE_NET_IF_VAR_H
456 # include <net/if_var.h>
458 #if HAVE_NET_NETOPT_H
459 # include <net/netopt.h>
462 # include <net/route.h>
465 # include <inet/nd.h>
468 # include <arpa/inet.h>
470 /* Required for IDRP */
471 #if HAVE_NETINET_IP_ICMP_H
472 # include <netinet/ip_icmp.h>
476 dnl V6 headers are checked below, after we check for v6
478 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
480 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
482 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
483 AC_DEFINE(SUNOS_5, 1, SunOS 5)
484 AC_CHECK_LIB(xnet, main)
488 | [*-sunos5.1[0-9]] \
489 | [*-sunos5.1[0-9].[0-9]] \
490 | [*-solaris2.[8-9]] \
491 | [*-solaris2.1[0-9]] \
492 | [*-solaris2.1[0-9].[0-9]])
494 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
495 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
496 AC_CHECK_LIB(socket, main)
497 AC_CHECK_LIB(nsl, main)
498 AC_CHECK_LIB(umem, main)
499 AC_CHECK_FUNCS([printstack],
500 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
501 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
505 *-sunos5* | *-solaris2*)
506 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
507 AC_CHECK_LIB(socket, main)
508 AC_CHECK_LIB(nsl, main)
513 AC_DEFINE(GNU_LINUX,,GNU Linux)
516 AC_CHECK_LIB(nsl, gethostbyname)
517 AC_CHECK_LIB(socket, socket)
521 AC_DEFINE(OPEN_BSD,,OpenBSD)
525 OTHER_METHOD="mtu_kvm.o"
526 AC_CHECK_LIB(kvm, main)
530 AC_DEFINE(IRIX_65,,IRIX 6.5)
534 dnl ---------------------
535 dnl Integrated VTY option
536 dnl ---------------------
537 case "${enable_vtysh}" in
538 "yes") VTYSH="vtysh";
539 AC_DEFINE(VTYSH,,VTY shell)
540 AC_PATH_PROG(PERL, perl)
541 dnl Vtysh uses libreadline, which looks for termcap functions at
542 dnl configure time. We follow readlines search order.
543 dnl The required procedures are in libtermcap on NetBSD, in
544 dnl [TODO] on Linux, and in [TODO] on Solaris.
545 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
546 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
547 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
548 [AC_CHECK_LIB(ncurses, tputs,
549 LIBREADLINE="$LIBREADLINE -lncurses")]
553 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
555 if test $ac_cv_lib_readline_main = no; then
556 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
558 AC_CHECK_HEADER(readline/history.h)
559 if test $ac_cv_header_readline_history_h = no;then
560 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
562 AC_CHECK_LIB(readline, rl_completion_matches,
563 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
564 if test $ac_cv_lib_readline_rl_completion_matches = no; then
565 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
571 AC_SUBST(LIBREADLINE)
576 if test "$with_libpam" = "yes"; then
577 AC_CHECK_HEADER([security/pam_misc.h],
578 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
579 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
580 pam_conv_func="misc_conv"
583 AC_CHECK_HEADER([security/openpam.h],
584 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
585 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
586 pam_conv_func="openpam_ttyconv"
589 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
590 AC_MSG_WARN([*** pam support will not be built ***])
595 if test "$with_libpam" = "yes"; then
596 dnl took this test from proftpds configure.in and suited to our needs
597 dnl -------------------------------------------------------------------------
599 dnl This next check looks funky due to a linker problem with some versions
600 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
601 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
602 dnl with RedHat 6.2 and Debian 2.2 or better.
603 AC_CHECK_LIB(pam, pam_start,
604 [AC_CHECK_LIB(pam, $pam_conv_func,
605 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
607 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
608 LIBPAM="-lpam -lpam_misc"]
612 [AC_CHECK_LIB(pam, pam_end,
613 [AC_CHECK_LIB(pam, $pam_conv_func,
614 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
615 LIBPAM="-lpam -ldl"],
616 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
617 LIBPAM="-lpam -ldl -lpam_misc"]
619 ],AC_MSG_WARN([*** pam support will not be built ***]),
626 dnl -------------------------------
627 dnl Endian-ness check
628 dnl -------------------------------
631 dnl -------------------------------
632 dnl check the size in byte of the C
633 dnl -------------------------------
634 dnl AC_CHECK_SIZEOF(char)
635 dnl AC_CHECK_SIZEOF(int)
636 dnl AC_CHECK_SIZEOF(short)
637 dnl AC_CHECK_SIZEOF(long)
639 dnl ----------------------------
640 dnl check existance of functions
641 dnl ----------------------------
651 AC_FUNC_SELECT_ARGTYPES
653 dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
654 dnl can lead to strange side effects. So we just check for strnlen
655 dnl directly, see below.
656 dnl AC_FUNC_STRNLENdnl
659 dnl -------------------------------
660 dnl bgpd needs pow() and hence libm
661 dnl -------------------------------
663 AC_CHECK_HEADER([math.h],
664 [AC_CHECK_LIB([m], [pow],
667 AC_DEFINE(HAVE_LIBM,, Have libm)
668 AC_CHECK_FUNCS(pow,[],[LIBM=""])
671 if test x"$LIBM" = x ; then
672 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
680 AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
681 inet_ntoa inet_aton strnlen \
682 memchr memmove memset select socket \
683 strcasecmp strchr strcspn strdup strerror \
684 strncasecmp strndup strrchr strspn strstr \
685 strtol strtoul strlcat strlcpy \
686 daemon snprintf vsnprintf \
687 if_nametoindex if_indextoname getifaddrs \
690 AC_CHECK_FUNCS(setproctitle, ,
691 [AC_CHECK_LIB(util, setproctitle,
693 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
699 dnl ------------------------------------
700 dnl Determine routing get and set method
701 dnl ------------------------------------
702 AC_MSG_CHECKING(zebra between kernel interface method)
703 if test x"$opsys" = x"gnu-linux"; then
704 if test "${enable_netlink}" = "yes";then
705 AC_MSG_RESULT(netlink)
706 RT_METHOD=rt_netlink.o
707 AC_DEFINE(HAVE_NETLINK,,netlink)
709 elif test "${enable_netlink}" = "no"; then
714 AC_MSG_RESULT(netlink)
715 RT_METHOD=rt_netlink.o
716 AC_DEFINE(HAVE_NETLINK,,netlink)
719 elif test x"$opsys" = x"sol2-6";then
720 AC_MSG_RESULT(Route socket)
721 KERNEL_METHOD="kernel_socket.o"
722 RT_METHOD="rt_socket.o"
723 elif test x"$opsys" = x"sol8";then
724 AC_MSG_RESULT(Route socket)
725 KERNEL_METHOD="kernel_socket.o"
726 RT_METHOD="rt_socket.o"
727 elif test "$opsys" = "irix" ; then
728 AC_MSG_RESULT(Route socket)
729 KERNEL_METHOD="kernel_socket.o"
730 RT_METHOD="rt_socket.o"
732 AC_TRY_RUN([#include <errno.h>
733 #include <sys/types.h>
734 #include <sys/socket.h>
740 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
741 if (ac_sock < 0 && errno == EINVAL)
745 [KERNEL_METHOD=kernel_socket.o
746 RT_METHOD=rt_socket.o
747 AC_MSG_RESULT(socket)],
748 [RT_METHOD=rt_ioctl.o
749 AC_MSG_RESULT(ioctl)],
750 [KERNEL_METHOD=kernel_socket.o
751 RT_METHOD=rt_socket.o
752 AC_MSG_RESULT(socket)])
755 AC_SUBST(KERNEL_METHOD)
756 AC_SUBST(OTHER_METHOD)
758 dnl --------------------------
759 dnl Determine IS-IS I/O method
760 dnl --------------------------
761 AC_CHECK_HEADER(net/bpf.h)
762 AC_CHECK_HEADER(sys/dlpi.h)
763 AC_MSG_CHECKING(zebra IS-IS I/O method)
764 if test x"$opsys" = x"gnu-linux"; then
765 AC_MSG_RESULT(pfpacket)
766 ISIS_METHOD=isis_pfpacket.o
767 elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
769 ISIS_METHOD="isis_dlpi.o"
771 if test $ac_cv_header_net_bpf_h = no; then
772 if test $ac_cv_header_sys_dlpi_h = no; then
774 AC_MSG_WARN([*** IS-IS support will not be built ***])
779 ISIS_METHOD="isis_dlpi.o"
782 ISIS_METHOD="isis_bpf.o"
785 AC_SUBST(ISIS_METHOD)
787 dnl ------------------------------------
788 dnl check for broken CMSG_FIRSTHDR macro
789 dnl ------------------------------------
790 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
791 AC_RUN_IFELSE([AC_LANG_SOURCE([[
794 #define __EXTENSIONS__
799 #ifdef HAVE_SYS_TYPES_H
800 #include <sys/types.h>
802 #ifdef HAVE_SYS_SOCKET_H
803 #include <sys/socket.h>
811 msg.msg_control = buf;
812 msg.msg_controllen = 0;
814 if (CMSG_FIRSTHDR(&msg) != NULL)
817 }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
818 [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
820 dnl ------------------------------
821 dnl check kernel route read method
822 dnl ------------------------------
823 AC_CACHE_CHECK(route read method check, zebra_rtread,
824 [if test "$netlink" = yes; then
825 RTREAD_METHOD="rtread_netlink.o"
826 zebra_rtread="netlink"
828 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
830 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
832 case $zebra_rtread in
833 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
834 zebra_rtread="proc";;
837 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
838 zebra_rtread="sysctl";;
839 *) RTREAD_METHOD="rtread_getmsg.o"
840 zebra_rtread="getmsg";;
842 *) RTREAD_METHOD="rtread_sysctl.o"
843 zebra_rtread="sysctl";;
846 AC_SUBST(RTREAD_METHOD)
848 dnl -----------------------------
849 dnl check interface lookup method
850 dnl -----------------------------
852 AC_MSG_CHECKING(interface looking up method)
853 if test "$netlink" = yes; then
854 AC_MSG_RESULT(netlink)
855 IF_METHOD=if_netlink.o
856 elif test "$opsys" = "sol2-6";then
857 AC_MSG_RESULT(Solaris GIF)
859 elif test "$opsys" = "sol8";then
860 AC_MSG_RESULT(Solaris GLIF)
861 IF_METHOD=if_ioctl_solaris.o
862 IOCTL_METHOD=ioctl_solaris.o
863 elif test "$opsys" = "irix" ; then
866 elif test "$opsys" = "openbsd";then
867 AC_MSG_RESULT(openbsd)
869 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
870 AC_MSG_RESULT(sysctl)
871 IF_METHOD=if_sysctl.o
872 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
878 AC_SUBST(IOCTL_METHOD)
880 dnl ---------------------------------------------------------------
881 dnl figure out how to specify an interface in multicast sockets API
882 dnl ---------------------------------------------------------------
883 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
885 AC_MSG_CHECKING([for BSD struct ip_mreq hack])
886 AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
887 #include <sys/param.h>
888 #endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
891 #error No support for BSD struct ip_mreq hack detected
892 #endif],[AC_MSG_RESULT(yes)
893 AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
896 dnl ---------------------------------------------------------------
897 dnl figure out how to check link-state
898 dnl ---------------------------------------------------------------
899 AC_CHECK_HEADER([net/if.h],
900 [AC_CHECK_HEADER( [net/if_media.h],
901 [m4_define([LINK_DETECT_INCLUDES],
903 [#include <net/if_media.h>
905 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
906 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
907 [], LINK_DETECT_INCLUDES)],
910 [], QUAGGA_INCLUDES )
912 dnl ------------------------
913 dnl TCP_MD5SIG socket option
914 dnl ------------------------
916 AC_CHECK_HEADER([netinet/tcp.h],
917 [m4_define([MD5_INCLUDES],
919 [#include <netinet/tcp.h>
921 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
924 if test $ac_cv_have_decl_TCP_MD5SIG = no; then
925 AC_CHECK_HEADER([linux/tcp.h],
926 [m4_define([MD5_INCLUDES],
928 [#include <linux/tcp.h>
930 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
933 dnl -----------------------
934 dnl check proc file system.
935 dnl -----------------------
936 if test "$netlink" != yes; then
937 if test -r /proc/net/dev; then
938 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
941 if test -r /proc/net/if_inet6; then
942 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
948 dnl -----------------------------
949 dnl check ipforward detect method
950 dnl -----------------------------
951 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
952 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
954 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
956 case $zebra_ipforward_path in
957 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
958 zebra_ipforward_path="proc";;
961 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
962 zebra_ipforward_path="ews";;
963 *-freebsd*) IPFORWARD=ipforward_sysctl.o
964 zebra_ipforward_path="sysctl";;
965 *) IPFORWARD=ipforward_solaris.o
966 zebra_ipforward_path="solaris";;
968 *) IPFORWARD=ipforward_sysctl.o
969 zebra_ipforward_path="sysctl";;
973 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
978 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
979 if test "${enable_ipv6}" = "no"; then
980 AC_MSG_RESULT(disabled)
985 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
987 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
988 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
992 AC_MSG_RESULT(INRIA IPv6)
996 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
998 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
999 AC_DEFINE(KAME,1,KAME IPv6)
1002 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
1003 LIB_IPV6="-L/usr/local/v6/lib -linet6"
1006 dnl -------------------------
1008 dnl default host check
1009 dnl It is not used by Kheops
1010 dnl -------------------------
1011 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
1013 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
1014 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
1015 AC_DEFINE(KAME,1,KAME IPv6 stack)
1018 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
1019 LIB_IPV6="-L/usr/local/v6/lib -linet6"
1021 AC_MSG_RESULT(MUSICA)
1025 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1027 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
1028 AC_DEFINE(NRL,1,NRL)
1031 if test x"$opsys" = x"bsdi";then
1032 AC_DEFINE(BSDI_NRL,,BSDI)
1033 AC_MSG_RESULT(BSDI_NRL)
1037 dnl ------------------------------------
1038 dnl Solaris 9, 10 and potentially higher
1039 dnl ------------------------------------
1040 elif test x"$opsys" = x"sol8"; then
1042 AC_DEFINE(HAVE_IPV6, 1, IPv6)
1043 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
1046 AC_MSG_RESULT(Solaris IPv6)
1050 elif test "${enable_ipv6}" = "yes"; then
1052 #include <linux/version.h>
1053 /* 2.1.128 or later */
1054 #if LINUX_VERSION_CODE >= 0x020180
1058 zebra_cv_linux_ipv6=yes
1059 AC_MSG_RESULT(Linux IPv6)])
1061 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
1064 zebra_cv_linux_ipv6=yes
1065 AC_MSG_RESULT(Linux IPv6)
1069 if test "$zebra_cv_linux_ipv6" = "yes";then
1070 AC_MSG_CHECKING(whether libc has IPv6 support)
1071 AC_TRY_LINK([#include <netinet/in.h>
1072 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
1075 zebra_cv_linux_ipv6=yes],
1078 zebra_cv_linux_ipv6=no])
1081 if test "$zebra_cv_linux_ipv6" = "yes";then
1082 AC_MSG_CHECKING(for GNU libc >= 2.1)
1083 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
1085 #include <features.h>
1086 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
1090 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
1091 AC_MSG_RESULT(yes)],
1096 if test "$glibc" != "yes"; then
1097 INCLUDES="-I/usr/inet6/include"
1098 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
1099 LIB_IPV6="-L/usr/inet6/lib -linet6"
1104 dnl -----------------------
1105 dnl Set IPv6 related values
1106 dnl -----------------------
1107 LIBS="$LIB_IPV6 $LIBS"
1110 if test x"$RIPNGD" = x""; then
1111 AC_MSG_RESULT(IPv4 only)
1115 dnl ------------------
1116 dnl IPv6 header checks
1117 dnl ------------------
1118 if test "x${zebra_cv_ipv6}" = "xyes"; then
1119 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
1120 netinet6/in6_var.h netinet6/nd6.h], [], [],
1124 m4_define([QUAGGA_INCLUDES],dnl
1126 [#if HAVE_NETINET6_IN6_H
1127 #include <netinet6/in6.h>
1129 #if HAVE_NETINET_IN6_VAR_H
1130 #include <netinet/in6_var.h>
1132 #if HAVE_NETINET_ICMP6_H
1133 # include <netinet/icmp6.h>
1135 #if HAVE_NETINET6_IN6_VAR_H
1136 # include <netinet6/in6_var.h>
1138 #if HAVE_NETINET6_ND6_H
1139 # include <netinet6/nd6.h>
1143 dnl --------------------
1144 dnl Daemon disable check
1145 dnl --------------------
1146 if test "${enable_zebra}" = "no";then
1152 if test "${enable_bgpd}" = "no";then
1158 if test "${enable_ripd}" = "no";then
1164 if test "${enable_ospfd}" = "no";then
1170 if test "${enable_watchquagga}" = "no";then
1173 WATCHQUAGGA="watchquagga"
1177 if test "${enable_opaque_lsa}" = "yes"; then
1178 if test "${enable_ospfapi}" != "no";then
1179 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
1181 if test "${enable_ospfclient}" != "no";then
1182 OSPFCLIENT="ospfclient"
1188 case "${enable_ripngd}" in
1189 "yes") RIPNGD="ripngd";;
1194 case "${enable_ospf6d}" in
1195 "yes") OSPF6D="ospf6d";;
1200 case "${enable_isisd}" in
1201 "yes") ISISD="isisd";;
1206 # XXX Perhaps auto-enable on Solaris, but that's messy for cross builds.
1207 case "${enable_solaris}" in
1208 "yes") SOLARIS="solaris";;
1213 if test "${enable_bgp_announce}" = "no";then
1214 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1216 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
1225 AC_SUBST(WATCHQUAGGA)
1231 AC_SUBST(OSPFCLIENT)
1233 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1234 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1235 AC_CHECK_LIB(crypt, crypt)
1236 AC_CHECK_LIB(resolv, res_init)
1238 dnl ---------------------------------------------------
1239 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1240 dnl ---------------------------------------------------
1241 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1242 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1243 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
1245 dnl ---------------------------
1246 dnl check system has GNU regexp
1247 dnl ---------------------------
1248 dnl AC_MSG_CHECKING(whether system has GNU regex)
1249 AC_CHECK_LIB(c, regexec,
1250 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1252 [LIB_REGEX="regex.o"])
1255 dnl ------------------
1256 dnl check Net-SNMP library
1257 dnl ------------------
1258 if test "${enable_snmp}" = "yes"; then
1259 if test "$with_crypto" != "no"; then
1260 LIBS="${LIBS} -lcrypto";
1262 AC_CHECK_LIB(netsnmp, asn_parse_int,
1263 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1264 AC_DEFINE(HAVE_SNMP,,SNMP)
1265 LIBS="${LIBS} -lnetsnmp"],
1266 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1268 AC_CHECK_HEADER([net-snmp/net-snmp-config.h],
1270 [AC_MSG_ERROR([--enable-snmp given, but cannot find net-snmp-config.h])],
1272 AC_SUBST(SNMP_INCLUDES)
1275 dnl ---------------------------
1276 dnl sockaddr and netinet checks
1277 dnl ---------------------------
1278 AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1279 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
1281 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1282 struct nd_opt_adv_interval, struct rt_addrinfo,
1283 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
1284 [], [], QUAGGA_INCLUDES)
1286 AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1287 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1288 struct sockaddr_in6.sin6_scope_id,
1289 struct if6_aliasreq.ifra_lifetime,
1290 struct nd_opt_adv_interval.nd_opt_ai_type],
1291 [], [], QUAGGA_INCLUDES)
1293 dnl ---------------------------
1294 dnl IRDP/pktinfo/icmphdr checks
1295 dnl ---------------------------
1296 AC_CHECK_TYPES([struct in_pktinfo],
1297 [AC_CHECK_TYPES([struct icmphdr],
1298 [if test "${enable_irdp}" != "no"; then
1299 AC_DEFINE(HAVE_IRDP,, IRDP)
1301 [if test "${enable_irdp}" = "yes"; then
1302 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1303 fi], [QUAGGA_INCLUDES])],
1304 [if test "${enable_irdp}" = "yes"; then
1305 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1306 fi], [QUAGGA_INCLUDES])
1308 dnl --------------------------------------
1309 dnl checking for getrusage struct and call
1310 dnl --------------------------------------
1311 AC_MSG_CHECKING(whether getrusage is available)
1312 AC_TRY_COMPILE([#include <sys/resource.h>
1313 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1315 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1318 dnl -------------------
1319 dnl capabilities checks
1320 dnl -------------------
1321 if test "${enable_capabilities}" != "no"; then
1322 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1323 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1325 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1326 quagga_ac_keepcaps="yes"],
1329 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1330 AC_CHECK_HEADERS(sys/capability.h)
1332 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1333 AC_CHECK_LIB(cap, cap_init,
1334 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1336 quagga_ac_lcaps="yes"]
1339 AC_CHECK_HEADERS(priv.h,
1340 [AC_MSG_CHECKING(Solaris style privileges are available)
1341 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1343 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1344 quagga_ac_scaps="yes"],
1350 if test x"${quagga_ac_scaps}" = x"yes" \
1351 -o x"${quagga_ac_lcaps}" = x"yes"; then
1352 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
1357 dnl ---------------------------
1358 dnl check for glibc 'backtrace'
1359 dnl ---------------------------
1360 if test "${glibc}" = "yes"; then
1361 AC_CHECK_HEADER([execinfo.h],
1362 [AC_CHECK_FUNC([backtrace],
1363 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1364 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1369 dnl -----------------------------------------
1370 dnl check for malloc mallinfo struct and call
1371 dnl this must try and link using LIBS, in
1372 dnl order to check no alternative allocator
1373 dnl has been specified, which might not provide
1374 dnl mallinfo, e.g. such as Umem on Solaris.
1375 dnl -----------------------------------------
1376 AC_CHECK_HEADER([malloc.h],
1377 [AC_MSG_CHECKING(whether mallinfo is available)
1378 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1379 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1381 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1384 ], [], QUAGGA_INCLUDES)
1389 CONFDATE=`date '+%Y%m%d'`
1392 dnl Conditionally enable PIE support for GNU toolchains.
1395 AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
1396 if test "$enable_pie" = "yes"; then
1397 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1399 save_LDFLAGS=$LDFLAGS
1400 CFLAGS="$CFLAGS -fPIE"
1401 LDFLAGS="$LDFLAGS -pie"
1402 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1403 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1406 LDFLAGS=$save_LDFLAGS
1408 if test "$ap_cv_cc_pie" = "yes"; then
1417 dnl ------------------------------
1418 dnl set paths for state directory
1419 dnl ------------------------------
1420 if test "${prefix}" = "NONE"; then
1421 quagga_statedir_prefix="";
1423 quagga_statedir_prefix=${prefix}
1425 if test "${localstatedir}" = '${prefix}/var'; then
1426 AC_CACHE_CHECK(state directory,ac_statedir,
1427 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1428 ${quagga_statedir_prefix}/var/adm dnl
1429 ${quagga_statedir_prefix}/etc dnl
1435 test -d $QUAGGA_STATE_DIR && break
1437 quagga_statedir=$QUAGGA_STATE_DIR])
1439 quagga_statedir=${localstatedir}
1440 AC_MSG_CHECKING(directory to use for state file)
1441 AC_MSG_RESULT(${quagga_statedir})
1442 AC_SUBST(quagga_statedir)
1444 if test $quagga_statedir = "/dev/null"; then
1445 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1448 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1449 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1450 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1451 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1452 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1453 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1454 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1455 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1456 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1457 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1458 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1459 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1460 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1461 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1462 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1463 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1464 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1466 dnl -------------------------------
1467 dnl Quagga sources should always be
1468 dnl current wrt interfaces. Dont
1469 dnl allow deprecated interfaces to
1471 dnl -------------------------------
1472 AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1474 dnl ---------------------------
1475 dnl Check htonl works correctly
1476 dnl ---------------------------
1477 AC_MSG_CHECKING(for working htonl)
1478 AC_CACHE_VAL(ac_cv_htonl_works,
1479 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1480 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1483 AC_MSG_RESULT($ac_cv_htonl_works)
1485 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1486 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1487 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1488 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1493 isisd/topology/Makefile
1494 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1495 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1496 AC_CONFIG_FILES([solaris/Makefile])
1498 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1499 ## Hack, but working solution to avoid rebuilding of quagga.info.
1500 ## It's already in CVS until texinfo 4.7 is more common.
1504 Quagga configuration
1505 --------------------
1506 quagga version : ${PACKAGE_VERSION}
1507 host operationg system : ${host_os}
1508 source code location : ${srcdir}
1510 compiler flags : ${CFLAGS}
1512 includes : ${INCLUDES} ${SNMP_INCLUDES}
1513 linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
1514 state file directory : ${quagga_statedir}
1515 config file directory : `eval echo \`echo ${sysconfdir}\``
1516 example directory : `eval echo \`echo ${exampledir}\``
1517 user to run as : ${enable_user}
1518 group to run as : ${enable_group}
1519 group for vty sockets : ${enable_vty_group}
1520 config file mask : ${enable_configfile_mask}
1521 log file mask : ${enable_logfile_mask}
1523 The above user and group must have read/write access to the state file
1524 directory and to the config files in the config file directory."
1526 if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1527 Warning: The ${MAKE-make} programme detected, either in your path or
1528 via the MAKE variable, is not GNU Make. GNU make may be installed as
1529 gmake on some systems. and is required to complete a build of Quagga