]> git.proxmox.com Git - mirror_frr.git/blame - configure.ac
lib: Add support for IPv6 ttl security
[mirror_frr.git] / configure.ac
CommitLineData
7ea487bc 1##
e8f2984c 2## Configure template file for Quagga.
7ea487bc 3## autoconf will generate configure script.
4##
5## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
e8f2984c 6## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
7ea487bc 7##
105b8239 8## $Id$
e8f2984c 9AC_PREREQ(2.53)
7ea487bc 10
d8509631 11AC_INIT(Quagga, 0.99.18, [https://bugzilla.quagga.net])
fa1253d0 12AC_CONFIG_SRCDIR(lib/zebra.h)
62c9f504 13AC_CONFIG_MACRO_DIR([m4])
dfb9a545 14
15dnl -----------------------------------
16dnl Get hostname and other information.
17dnl -----------------------------------
18AC_CANONICAL_BUILD()
19AC_CANONICAL_HOST()
20AC_CANONICAL_TARGET()
21
81b81822 22AM_INIT_AUTOMAKE(1.6)
7ea487bc 23AM_CONFIG_HEADER(config.h)
24
7ec57366
JJ
25AC_CHECK_PROG([GAWK],[gawk],[gawk],[not-in-PATH])
26if test "x$GAWK" = "xnot-in-PATH" ; then
27 AC_MSG_ERROR([GNU awk is required for lib/memtype.h made by memtypes.awk.
28BSD awk complains: awk: gensub doesn't support backreferences (subst "\1") ])
29fi
03ecfb67 30AC_ARG_VAR([GAWK],[GNU AWK])
31
d6b72f7a 32dnl default is to match previous behavior
c4f0efe6 33exampledir=${sysconfdir}
d6b72f7a 34AC_ARG_ENABLE([exampledir],
35 AC_HELP_STRING([--enable-exampledir],
36 [specify alternate directory for examples]),
37 exampledir="$enableval",)
c4f0efe6 38dnl XXX add --exampledir to autoconf standard directory list somehow
d6b72f7a 39AC_SUBST(exampledir)
40
cbd04084 41dnl default is to match previous behavior
42pkgsrcrcdir=""
43pkgsrcdir=""
44AC_ARG_ENABLE([pkgsrcrcdir],
45 AC_HELP_STRING([--enable-pkgsrcrcdir],
46 [specify directory for rc.d scripts]),
47 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
48dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
49AC_SUBST(pkgsrcdir)
50AC_SUBST(pkgsrcrcdir)
51
7ea487bc 52dnl ------------
53dnl Check CFLAGS
54dnl ------------
55AC_ARG_WITH(cflags,
56[ --with-cflags Set CFLAGS for use in compilation.])
57if test "x$with_cflags" != "x" ; then
58 CFLAGS="$with_cflags" ; cflags_specified=yes ;
59elif test -n "$CFLAGS" ; then
60 cflags_specified=yes ;
61fi
62
1969e4b9 63dnl --------------------
64dnl Check CC and friends
65dnl --------------------
46bc0e43 66AC_LANG([C])
7ea487bc 67AC_PROG_CC
1969e4b9 68AC_PROG_CPP
46bc0e43 69AM_PROG_CC_C_O
1969e4b9 70AC_PROG_EGREP
553bdfe3
GT
71
72dnl autoconf 2.59 appears not to support AC_PROG_SED
73dnl AC_PROG_SED
74AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
1969e4b9 75
76dnl ------------------------------------------------------------------
77dnl Intel compiler check. Although Intel tries really hard to make icc
78dnl look like gcc, there are some differences. It's very verbose with
79dnl -Wall and it doesn't support the individual -W options.
80dnl ------------------------------------------------------------------
6a4b8832 81if test "x${GCC}" = "xyes" ; then
82 COMPILER="GCC"
83 AC_MSG_CHECKING([whether we are using the Intel compiler])
84 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
85 [AC_MSG_RESULT([no])],
86 [COMPILER="ICC"
87 AC_MSG_RESULT([yes])]
88 )
89else
90 AC_MSG_CHECKING([whether we are using SunPro compiler])
91 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
92 [AC_MSG_RESULT([no])],
93 [COMPILER="SUNPRO"
94 AC_MSG_RESULT([yes])]
95 )
96fi
7ea487bc 97
a49c0ff6 98dnl ---------------------------------------------
7ea487bc 99dnl If CLFAGS doesn\'t exist set default value
a49c0ff6 100dnl AC_PROG_CC will have set minimal default
101dnl already, eg "-O2 -g" for gcc, "-g" for others
27eebb3e 102dnl (Wall is gcc specific... have to make sure
103dnl gcc is being used before setting it)
104dnl
6a4b8832 105dnl Intel icc 8.0 also sets __GNUC__,
106dnl but doesn't support all these fancy -W options.
1969e4b9 107dnl Intel compiler warnings we ignore:
108dnl 279: controlling expression is constant.
109dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
110dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
111dnl macro.
112dnl 981: operands are evaluated in unspecified order.
6a4b8832 113dnl
114dnl Sun Studio 10 / SunPro 5.7 is also supported,
115dnl so lets set some sane CFLAGS for it.
116dnl ---------------------------------------------
1969e4b9 117
6a4b8832 118AC_MSG_CHECKING([whether to set a default CFLAGS])
119if test "x${cflags_specified}" = "x" ; then
120 case ${COMPILER} in
121 "ICC")
122 CFLAGS="-Os -g -Wall -wd 279,869,981"
123 AC_MSG_RESULT([Intel default])
124 ;;
125 "GCC")
5fa05099 126 CFLAGS="-Os -fno-omit-frame-pointer -g -std=gnu99 -Wall"
6a4b8832 127 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
128 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
129 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
130 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
131 # TODO: conditionally addd -Wpacked if handled
132 AC_MSG_RESULT([gcc default])
133 ;;
134 "SUNPRO")
105b8239 135 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
6a4b8832 136 AC_MSG_RESULT([SunPro default])
137 ;;
138 *)
139 AC_MSG_RESULT([unknown compiler])
140 ;;
141 esac
142else
143 AC_MSG_RESULT([CFLAGS supplied by user])
1969e4b9 144fi
145
7ea487bc 146dnl --------------
147dnl Check programs
148dnl --------------
7ea487bc 149AC_PROG_INSTALL
6f0e3f6e 150AC_PROG_LN_S
7ea487bc 151AC_PROG_MAKE_SET
152AC_CHECK_TOOL(AR, ar)
7ea487bc 153
105b8239
PJ
154dnl ---------------------------
155dnl We, perhaps unfortunately,
156dnl depend on GNU Make specific
157dnl constructs.
158dnl Give the user a warning if
159dnl not GNU Make.
160dnl ---------------------------
161AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
162 [quagga_cv_gnu_make=no
163 if ${MAKE-make} --version 2>/dev/null | \
164 grep '^GNU Make ' >/dev/null ; then
165 quagga_cv_gnu_make=yes;
166 fi
167 ]
168)
169
d46d2a24
PJ
170dnl -----------------
171dnl System extensions
172dnl -----------------
d46d2a24 173AC_GNU_SOURCE
7ea487bc 174
87efd646 175dnl -------
176dnl libtool
177dnl -------
0fc42949 178AC_PROG_LIBTOOL
87efd646 179
7ea487bc 180dnl ----------------------
181dnl Packages configuration
182dnl ----------------------
183AC_ARG_ENABLE(vtysh,
fc9d0745 184[ --enable-vtysh include integrated vty shell for Quagga])
7ea487bc 185AC_ARG_ENABLE(ipv6,
186[ --disable-ipv6 turn off IPv6 related features and daemons])
cbcd9bfc
JT
187AC_ARG_ENABLE(doc,
188[ --disable-doc do not build docs])
7ea487bc 189AC_ARG_ENABLE(zebra,
190[ --disable-zebra do not build zebra daemon])
191AC_ARG_ENABLE(bgpd,
192[ --disable-bgpd do not build bgpd])
193AC_ARG_ENABLE(ripd,
194[ --disable-ripd do not build ripd])
195AC_ARG_ENABLE(ripngd,
196[ --disable-ripngd do not build ripngd])
197AC_ARG_ENABLE(ospfd,
198[ --disable-ospfd do not build ospfd])
7ea487bc 199AC_ARG_ENABLE(ospf6d,
200[ --disable-ospf6d do not build ospf6d])
d0199430 201AC_ARG_ENABLE(watchquagga,
202[ --disable-watchquagga do not build watchquagga])
9e867fe6 203AC_ARG_ENABLE(isisd,
ae399ab0 204[ --enable-isisd build isisd])
97cee877
GT
205AC_ARG_ENABLE(solaris,
206[ --enable-solaris build solaris])
7ea487bc 207AC_ARG_ENABLE(bgp-announce,
208[ --disable-bgp-announce, turn off BGP route announcement])
209AC_ARG_ENABLE(netlink,
210[ --enable-netlink force to use Linux netlink interface])
211AC_ARG_ENABLE(broken-aliases,
212[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
fb62a3ce
JT
213AC_ARG_WITH(crypto,
214[ --without-crypto do not use libcrypto in SNMP])
7ea487bc 215AC_ARG_ENABLE(snmp,
216[ --enable-snmp enable SNMP support])
217AC_ARG_WITH(libpam,
218[ --with-libpam use libpam for PAM support in vtysh])
71c0fb50 219AC_ARG_ENABLE(tcp-zebra,
7ea487bc 220[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
7ea487bc 221AC_ARG_ENABLE(opaque-lsa,
36de261b 222 AC_HELP_STRING([--disable-opaque-lsa],[do not build OSPF Opaque-LSA with OSPFAPI support (RFC2370)]))
1ef74ef7 223AC_ARG_ENABLE(ospfapi,
36de261b 224[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database])
1ef74ef7 225AC_ARG_ENABLE(ospfclient,
226[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
227 (this is the default if --disable-ospfapi is set)])
7ea487bc 228AC_ARG_ENABLE(ospf-te,
36de261b 229 AC_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
7ea487bc 230AC_ARG_ENABLE(multipath,
231[ --enable-multipath=ARG enable multipath function, ARG must be digit])
fe86b484
PKJ
232AC_ARG_ENABLE(user,
233 AC_HELP_STRING([--enable-user=user], [user to run Quagga suite as (default quagga)]))
234AC_ARG_ENABLE(group,
235 AC_HELP_STRING([--enable-group=group], [group to run Quagga suite as (default quagga)]))
edd7c245 236AC_ARG_ENABLE(vty_group,
6b6942f9 237[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
aa593d5e 238AC_ARG_ENABLE(configfile_mask,
239[ --enable-configfile-mask=ARG set mask for config files])
240AC_ARG_ENABLE(logfile_mask,
241[ --enable-logfile-mask=ARG set mask for log files])
edd7c245 242
71c0fb50 243AC_ARG_ENABLE(rtadv,
6b6942f9 244[ --disable-rtadv disable IPV6 router advertisement feature])
ca776988 245AC_ARG_ENABLE(irdp,
6b6942f9 246[ --enable-irdp enable IRDP server support in zebra])
f695b01f 247AC_ARG_ENABLE(isis_topology,
248[ --enable-isis-topology enable IS-IS topology generator])
41d3fc96 249AC_ARG_ENABLE(capabilities,
250[ --disable-capabilities disable using POSIX capabilities])
6b6942f9 251AC_ARG_ENABLE(gcc_ultra_verbose,
252[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
3453a712
PJ
253AC_ARG_ENABLE(linux24_tcp_md5,
254[ --enable-linux24-tcp-md5 enable support for old, Linux-2.4 RFC2385 patch])
3cade26f 255AC_ARG_ENABLE(gcc-rdynamic,
256[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
924b9229 257AC_ARG_ENABLE(time-check,
258[ --disable-time-check disable slow thread warning messages])
25f45887
JJ
259AC_ARG_ENABLE(pcreposix,
260[ --enable-pcreposix enable using PCRE Posix libs for regex functions])
6b6942f9 261
262if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
263 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
264 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
265 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
266 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
267fi
7ea487bc 268
3cade26f 269if test x"${enable_gcc_rdynamic}" = x"yes" ; then
270 LDFLAGS="${LDFLAGS} -rdynamic"
271fi
272
924b9229 273if test x"${enable_time_check}" != x"no" ; then
274 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
275 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
276 else
277 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
278 fi
279fi
280
7ea487bc 281if test "${enable_broken_aliases}" = "yes"; then
282 if test "${enable_netlink}" = "yes"
283 then
6f0e3f6e 284 AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases])
7ea487bc 285 fi
286 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
287 enable_netlink=no
288fi
289
290if test "${enable_tcp_zebra}" = "yes"; then
291 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
292fi
293
36de261b 294if test "${enable_opaque_lsa}" != "no"; then
7ea487bc 295 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
296fi
297
36de261b 298if test "${enable_ospf_te}" != "no"; then
7ea487bc 299 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
300 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
301fi
302
3453a712
PJ
303if test "${enable_linux24_tcp_md5}" = "yes"; then
304 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
305fi
306
d2a0ccc6 307AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
308if test "${enable_rtadv}" != "no"; then
71c0fb50 309 AC_MSG_RESULT(yes)
d2a0ccc6 310 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
2487bea1 311else
312 AC_MSG_RESULT(no)
71c0fb50 313fi
7ea487bc 314
ca776988 315if test "${enable_irdp}" = "yes"; then
316 AC_DEFINE(HAVE_IRDP,, IRDP )
317fi
318
f695b01f 319if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
320 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
321 ISIS_TOPOLOGY_INCLUDES="-I./topology"
322 ISIS_TOPOLOGY_DIR="topology"
323 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
324fi
325
326AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
327AC_SUBST(ISIS_TOPOLOGY_DIR)
328AC_SUBST(ISIS_TOPOLOGY_LIB)
329
79cb2169 330if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
e8f2984c 331 enable_user="quagga"
edd7c245 332elif test "${enable_user}" = "no"; then
333 enable_user="root"
334fi
edd7c245 335
79cb2169 336if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
e8f2984c 337 enable_group="quagga"
edd7c245 338elif test "${enable_group}" = "no"; then
339 enable_group="root"
340fi
edd7c245 341
342if test x"${enable_vty_group}" = x"yes" ; then
8d4aee5d 343 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
79cb2169 344elif test x"${enable_vty_group}" != x""; then
8d4aee5d 345 if test x"${enable_vty_group}" != x"no"; then
edd7c245 346 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
347 fi
348fi
26275b05 349AC_SUBST([enable_user])
350AC_SUBST([enable_group])
351AC_SUBST([enable_vty_group])
352AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
353AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
edd7c245 354
aa593d5e 355enable_configfile_mask=${enable_configfile_mask:-0600}
356AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
357
358enable_logfile_mask=${enable_logfile_mask:-0600}
359AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
360
7ea487bc 361MULTIPATH_NUM=1
362
363case "${enable_multipath}" in
6f0e3f6e 364 [[0-9]|[1-9][0-9]])
7ea487bc 365 MULTIPATH_NUM="${enable_multipath}"
366 ;;
367 "")
368 ;;
369 *)
6f0e3f6e 370 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
7ea487bc 371 ;;
372esac
373
7ea487bc 374AC_SUBST(MULTIPATH_NUM)
375
6f0e3f6e
PJ
376dnl ------------------------------------
377dnl Check C keywords and standard types
378dnl ------------------------------------
379AC_C_CONST
380AC_C_INLINE
381AC_C_RESTRICT
382AC_C_VOLATILE
dc7a2bf1 383AC_HEADER_STDC
6f0e3f6e
PJ
384AC_HEADER_TIME
385AC_HEADER_SYS_WAIT
386dnl AC_TYPE_PID_T
387AC_TYPE_UID_T
388AC_TYPE_MODE_T
389AC_TYPE_SIZE_T
390AC_TYPE_SIGNAL
391AC_STRUCT_TM
dc7a2bf1 392
6f0e3f6e
PJ
393dnl -------------------------
394dnl Check other header files.
395dnl -------------------------
396AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
397 sys/types.h linux/version.h netdb.h asm/types.h \
398 sys/param.h limits.h signal.h libutil.h \
6511cab2 399 sys/socket.h netinet/in.h time.h sys/time.h])
6f0e3f6e
PJ
400
401dnl Utility macro to avoid retyping includes all the time
402m4_define([QUAGGA_INCLUDES],
403[#ifdef SUNOS_5
404#define _XPG4_2
405#define __EXTENSIONS__
406#endif
407#include <stdio.h>
408#if STDC_HEADERS
409# include <stdlib.h>
410# include <stddef.h>
411#else
412# if HAVE_STDLIB_H
413# include <stdlib.h>
414# endif
415#endif
416#if HAVE_SYS_TYPES_H
417# include <sys/types.h>
418#endif
419/* sys/conf.h depends on param.h on FBSD at least */
420#if HAVE_SYS_PARAM_H
421# include <sys/param.h>
422#endif
423/* Required for MAXSIG */
424#if HAVE_SIGNAL_H
425# include <signal.h>
426#endif
427#if HAVE_SYS_SOCKET_H
428# include <sys/socket.h>
429#endif
430#if HAVE_NETINET_IN_H
431# include <netinet/in.h>
432#endif
6511cab2
PJ
433#ifdef TIME_WITH_SYS_TIME
434# include <sys/time.h>
435# include <time.h>
436#else
437# ifdef HAVE_SYS_TIME_H
438# include <sys/time.h>
439# else
440# include <time.h>
441# endif
442#endif /* TIME_WITH_SYS_TIME */
6f0e3f6e
PJ
443])dnl
444
445AC_CHECK_HEADERS([sys/un.h net/if.h netinet/in_systm.h netinet/in_var.h \
446 net/if_dl.h net/if_var.h net/netopt.h net/route.h \
11770e10 447 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
6f0e3f6e
PJ
448 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
449 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
450 [], [], QUAGGA_INCLUDES)
451
452AC_CHECK_HEADERS([ucontext.h], [], [],
453[#ifndef __USE_GNU
454#define __USE_GNU
455#endif /* __USE_GNU */
456QUAGGA_INCLUDES
457])
458
459m4_define([QUAGGA_INCLUDES],
460QUAGGA_INCLUDES
461[#if HAVE_NET_IF_H
462# include <net/if.h>
463#endif
464#if HAVE_SYS_UN_H
465# include <sys/un.h>
466#endif
467#if HAVE_NETINET_IN_SYSTM_H
468# include <netinet/in_systm.h>
469#endif
470#if HAVE_NETINET_IN_VAR_H
471# include <netinet/in_var.h>
472#endif
473#if HAVE_NET_IF_DL_H
474# include <net/if_dl.h>
475#endif
476#if HAVE_NET_IF_VAR_H
477# include <net/if_var.h>
478#endif
479#if HAVE_NET_NETOPT_H
480# include <net/netopt.h>
481#endif
482#if HAVE_NET_ROUTE_H
483# include <net/route.h>
484#endif
485#if HAVE_INET_ND_H
486# include <inet/nd.h>
487#endif
488#if HAVE_ARPA_INET_H
489# include <arpa/inet.h>
490#endif
11770e10
PJ
491/* Required for IDRP */
492#if HAVE_NETINET_IP_ICMP_H
493# include <netinet/ip_icmp.h>
494#endif
6f0e3f6e 495])dnl
dc7a2bf1 496
fa3232e1 497dnl V6 headers are checked below, after we check for v6
7ea487bc 498
7ea487bc 499dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
500case "$host" in
afd8a129 501 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
7ea487bc 502 opsys=sol2-6
afd8a129 503 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
19877dd2 504 AC_DEFINE(SUNOS_5, 1, SunOS 5)
7ea487bc 505 AC_CHECK_LIB(xnet, main)
506 CURSES=-lcurses
507 ;;
1b73de8b 508 [*-sunos5.[8-9]] \
509 | [*-sunos5.1[0-9]] \
510 | [*-sunos5.1[0-9].[0-9]] \
511 | [*-solaris2.[8-9]] \
512 | [*-solaris2.1[0-9]] \
513 | [*-solaris2.1[0-9].[0-9]])
afd8a129 514 opsys=sol8
fb66b29c
PJ
515 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
516 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
19877dd2 517 AC_CHECK_LIB(socket, main)
518 AC_CHECK_LIB(nsl, main)
1b73de8b 519 AC_CHECK_LIB(umem, main)
fb66b29c
PJ
520 AC_CHECK_FUNCS([printstack],
521 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
522 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
523 ])
19877dd2 524 CURSES=-lcurses
525 ;;
7ea487bc 526 *-sunos5* | *-solaris2*)
19877dd2 527 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
7ea487bc 528 AC_CHECK_LIB(socket, main)
529 AC_CHECK_LIB(nsl, main)
530 CURSES=-lcurses
531 ;;
c45eb839 532 *-linux*)
7ea487bc 533 opsys=gnu-linux
534 AC_DEFINE(GNU_LINUX,,GNU Linux)
535 ;;
536 *-nec-sysv4*)
537 AC_CHECK_LIB(nsl, gethostbyname)
538 AC_CHECK_LIB(socket, socket)
539 ;;
7ea487bc 540 *-openbsd*)
541 opsys=openbsd
542 AC_DEFINE(OPEN_BSD,,OpenBSD)
543 ;;
544 *-bsdi*)
545 opsys=bsdi
546 OTHER_METHOD="mtu_kvm.o"
547 AC_CHECK_LIB(kvm, main)
548 ;;
49e3b3c0 549 *-irix6.5)
dc7a2bf1 550 opsys=irix
551 AC_DEFINE(IRIX_65,,IRIX 6.5)
552 ;;
7ea487bc 553esac
554
62c9f504
PJ
555AC_SYS_LARGEFILE
556
7ea487bc 557dnl ---------------------
558dnl Integrated VTY option
559dnl ---------------------
560case "${enable_vtysh}" in
561 "yes") VTYSH="vtysh";
562 AC_DEFINE(VTYSH,,VTY shell)
fc9d0745 563 AC_PATH_PROG(PERL, perl)
564dnl Vtysh uses libreadline, which looks for termcap functions at
6f0e3f6e 565dnl configure time. We follow readlines search order.
fc9d0745 566dnl The required procedures are in libtermcap on NetBSD, in
567dnl [TODO] on Linux, and in [TODO] on Solaris.
c0689394 568 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
a969459c 569 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
570 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
571 [AC_CHECK_LIB(ncurses, tputs,
572 LIBREADLINE="$LIBREADLINE -lncurses")]
573 )]
574 )]
575 )
576 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
577 "$LIBREADLINE")
7ea487bc 578 if test $ac_cv_lib_readline_main = no; then
fc9d0745 579 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
7ea487bc 580 fi
581 AC_CHECK_HEADER(readline/history.h)
582 if test $ac_cv_header_readline_history_h = no;then
583 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
584 fi
a969459c 585 AC_CHECK_LIB(readline, rl_completion_matches,
586 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
3d3de8c4 587 if test $ac_cv_lib_readline_rl_completion_matches = no; then
588 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
589 fi
590 ;;
7ea487bc 591 "no" ) VTYSH="";;
592 * ) ;;
593esac
c0689394 594AC_SUBST(LIBREADLINE)
7ea487bc 595
596dnl ----------
597dnl PAM module
598dnl ----------
24cd435b 599if test "$with_libpam" = "yes"; then
6f0e3f6e
PJ
600 AC_CHECK_HEADER([security/pam_misc.h],
601 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
602 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
603 pam_conv_func="misc_conv"
604 ],
605 [], QUAGGA_INCLUDES)
606 AC_CHECK_HEADER([security/openpam.h],
607 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
608 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
609 pam_conv_func="openpam_ttyconv"
610 ],
611 [], QUAGGA_INCLUDES)
24cd435b 612 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
613 AC_MSG_WARN([*** pam support will not be built ***])
614 with_libpam="no"
615 fi
616fi
617
7ea487bc 618if test "$with_libpam" = "yes"; then
6f0e3f6e 619dnl took this test from proftpds configure.in and suited to our needs
7ea487bc 620dnl -------------------------------------------------------------------------
621dnl
622dnl This next check looks funky due to a linker problem with some versions
623dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
624dnl omitted requiring libdl linking information. PAM-0.72 or better ships
625dnl with RedHat 6.2 and Debian 2.2 or better.
626AC_CHECK_LIB(pam, pam_start,
24cd435b 627 [AC_CHECK_LIB(pam, $pam_conv_func,
7ea487bc 628 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
629 LIBPAM="-lpam"],
630 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
631 LIBPAM="-lpam -lpam_misc"]
632 )
633 ],
634
635 [AC_CHECK_LIB(pam, pam_end,
24cd435b 636 [AC_CHECK_LIB(pam, $pam_conv_func,
a159ed93 637 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
7ea487bc 638 LIBPAM="-lpam -ldl"],
a159ed93 639 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
7ea487bc 640 LIBPAM="-lpam -ldl -lpam_misc"]
641 )
642 ],AC_MSG_WARN([*** pam support will not be built ***]),
643 [-ldl])
644 ]
645)
646fi
647AC_SUBST(LIBPAM)
648
649dnl -------------------------------
650dnl Endian-ness check
651dnl -------------------------------
652AC_WORDS_BIGENDIAN
653
654dnl -------------------------------
655dnl check the size in byte of the C
656dnl -------------------------------
657dnl AC_CHECK_SIZEOF(char)
658dnl AC_CHECK_SIZEOF(int)
659dnl AC_CHECK_SIZEOF(short)
660dnl AC_CHECK_SIZEOF(long)
661
662dnl ----------------------------
663dnl check existance of functions
664dnl ----------------------------
6f0e3f6e
PJ
665AC_FUNC_CHOWN
666AC_FUNC_FNMATCH
667AC_FUNC_FORK
668AC_FUNC_MALLOC
669AC_FUNC_MEMCMP
670AC_FUNC_MKTIME
671AC_FUNC_STRFTIME
672AC_FUNC_REALLOC
673AC_FUNC_STAT
674AC_FUNC_SELECT_ARGTYPES
675AC_FUNC_STRFTIME
d46d2a24
PJ
676dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
677dnl can lead to strange side effects. So we just check for strnlen
678dnl directly, see below.
2b5cb411 679dnl AC_FUNC_STRNLENdnl
6f0e3f6e
PJ
680AC_FUNC_VPRINTF
681
682dnl -------------------------------
683dnl bgpd needs pow() and hence libm
684dnl -------------------------------
685TMPLIBS="$LIBS"
686AC_CHECK_HEADER([math.h],
687 [AC_CHECK_LIB([m], [pow],
688 [LIBM="-lm"
689 LIBS="$LIBS $LIBM"
690 AC_DEFINE(HAVE_LIBM,, Have libm)
691 AC_CHECK_FUNCS(pow,[],[LIBM=""])
692 ])
693])
694if test x"$LIBM" = x ; then
695 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
696fi
697LIBS="$TMPLIBS"
698AC_SUBST(LIBM)
699
700dnl ---------------
701dnl other functions
702dnl ---------------
703AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
d46d2a24 704 inet_ntoa inet_aton strnlen \
6f0e3f6e
PJ
705 memchr memmove memset select socket \
706 strcasecmp strchr strcspn strdup strerror \
707 strncasecmp strndup strrchr strspn strstr \
708 strtol strtoul strlcat strlcpy \
709 daemon snprintf vsnprintf \
710 if_nametoindex if_indextoname getifaddrs \
711 uname fcntl])
712
a159ed93 713AC_CHECK_FUNCS(setproctitle, ,
714 [AC_CHECK_LIB(util, setproctitle,
715 [LIBS="$LIBS -lutil"
716 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
717 ]
718 )
719 ]
720)
7ea487bc 721
722dnl ------------------------------------
723dnl Determine routing get and set method
724dnl ------------------------------------
725AC_MSG_CHECKING(zebra between kernel interface method)
726if test x"$opsys" = x"gnu-linux"; then
727 if test "${enable_netlink}" = "yes";then
728 AC_MSG_RESULT(netlink)
729 RT_METHOD=rt_netlink.o
730 AC_DEFINE(HAVE_NETLINK,,netlink)
731 netlink=yes
732 elif test "${enable_netlink}" = "no"; then
733 AC_MSG_RESULT(ioctl)
734 RT_METHOD=rt_ioctl.o
735 netlink=no
736 else
737 AC_MSG_RESULT(netlink)
738 RT_METHOD=rt_netlink.o
739 AC_DEFINE(HAVE_NETLINK,,netlink)
740 netlink=yes
741 fi
19877dd2 742elif test x"$opsys" = x"sol2-6";then
743 AC_MSG_RESULT(Route socket)
744 KERNEL_METHOD="kernel_socket.o"
745 RT_METHOD="rt_socket.o"
afd8a129 746elif test x"$opsys" = x"sol8";then
19877dd2 747 AC_MSG_RESULT(Route socket)
748 KERNEL_METHOD="kernel_socket.o"
749 RT_METHOD="rt_socket.o"
750elif test "$opsys" = "irix" ; then
751 AC_MSG_RESULT(Route socket)
752 KERNEL_METHOD="kernel_socket.o"
753 RT_METHOD="rt_socket.o"
7ea487bc 754else
19877dd2 755 AC_TRY_RUN([#include <errno.h>
7ea487bc 756#include <sys/types.h>
757#include <sys/socket.h>
758
759main ()
760{
761 int ac_sock;
762
763 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
764 if (ac_sock < 0 && errno == EINVAL)
765 exit (1);
766 exit (0);
767}],
768 [KERNEL_METHOD=kernel_socket.o
769 RT_METHOD=rt_socket.o
770 AC_MSG_RESULT(socket)],
771 [RT_METHOD=rt_ioctl.o
772 AC_MSG_RESULT(ioctl)],
773 [KERNEL_METHOD=kernel_socket.o
774 RT_METHOD=rt_socket.o
775 AC_MSG_RESULT(socket)])
7ea487bc 776fi
777AC_SUBST(RT_METHOD)
778AC_SUBST(KERNEL_METHOD)
779AC_SUBST(OTHER_METHOD)
780
238497fc
PJ
781dnl --------------------------
782dnl Determine IS-IS I/O method
783dnl --------------------------
745bf05f
DL
784AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
785AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
786AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
238497fc
PJ
787AC_CHECK_HEADER(net/bpf.h)
788AC_CHECK_HEADER(sys/dlpi.h)
789AC_MSG_CHECKING(zebra IS-IS I/O method)
790if test x"$opsys" = x"gnu-linux"; then
791 AC_MSG_RESULT(pfpacket)
745bf05f 792 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
238497fc
PJ
793elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
794 AC_MSG_RESULT(DLPI)
745bf05f 795 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
238497fc
PJ
796else
797 if test $ac_cv_header_net_bpf_h = no; then
798 if test $ac_cv_header_sys_dlpi_h = no; then
799 AC_MSG_RESULT(none)
800 AC_MSG_WARN([*** IS-IS support will not be built ***])
801 ISISD=""
802 else
803 AC_MSG_RESULT(DLPI)
804 fi
745bf05f 805 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
238497fc
PJ
806 else
807 AC_MSG_RESULT(BPF)
745bf05f 808 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
238497fc
PJ
809 fi
810fi
745bf05f 811AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
238497fc 812
b99760ab 813dnl ------------------------------------
814dnl check for broken CMSG_FIRSTHDR macro
815dnl ------------------------------------
6c20046f 816AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
5b087528 817AC_RUN_IFELSE([AC_LANG_SOURCE([[
b99760ab 818#ifdef SUNOS_5
819#define _XPG4_2
820#define __EXTENSIONS__
821#endif
6f0e3f6e
PJ
822#ifdef HAVE_STDLIB_H
823# include <stdlib.h>
824#endif
825#ifdef HAVE_SYS_TYPES_H
b99760ab 826#include <sys/types.h>
6f0e3f6e
PJ
827#endif
828#ifdef HAVE_SYS_SOCKET_H
b99760ab 829#include <sys/socket.h>
6f0e3f6e 830#endif
b99760ab 831
832main()
833{
834 struct msghdr msg;
835 char buf[4];
836
837 msg.msg_control = buf;
838 msg.msg_controllen = 0;
839
840 if (CMSG_FIRSTHDR(&msg) != NULL)
841 exit(0);
842 exit (1);
5b087528 843}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
d33e8d7b 844[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
b99760ab 845
7ea487bc 846dnl ------------------------------
847dnl check kernel route read method
848dnl ------------------------------
5589ffa7
JJ
849AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
850[if test "x$netlink" = xyes; then
851 quagga_cv_rtread_method="netlink"
7ea487bc 852else
5589ffa7 853for quagga_cv_rtread_method in /proc/net/route /dev/ip /dev/null;
7ea487bc 854do
5589ffa7 855 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
7ea487bc 856done
5589ffa7
JJ
857case $quagga_cv_rtread_method in
858 "/proc/net/route") quagga_cv_rtread_method="proc";;
9c30ab6b 859 "/dev/ip")
860 case "$host" in
5589ffa7
JJ
861 *-freebsd*) quagga_cv_rtread_method="sysctl";;
862 *) quagga_cv_rtread_method="getmsg";;
9c30ab6b 863 esac;;
5589ffa7
JJ
864 *)
865 quagga_cv_rtread_method="sysctl";;
7ea487bc 866esac
867fi])
5589ffa7 868RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
7ea487bc 869AC_SUBST(RTREAD_METHOD)
870
871dnl -----------------------------
872dnl check interface lookup method
873dnl -----------------------------
19877dd2 874IOCTL_METHOD=ioctl.o
7ea487bc 875AC_MSG_CHECKING(interface looking up method)
876if test "$netlink" = yes; then
877 AC_MSG_RESULT(netlink)
878 IF_METHOD=if_netlink.o
19877dd2 879elif test "$opsys" = "sol2-6";then
880 AC_MSG_RESULT(Solaris GIF)
881 IF_METHOD=if_ioctl.o
afd8a129 882elif test "$opsys" = "sol8";then
19877dd2 883 AC_MSG_RESULT(Solaris GLIF)
884 IF_METHOD=if_ioctl_solaris.o
885 IOCTL_METHOD=ioctl_solaris.o
886elif test "$opsys" = "irix" ; then
887 AC_MSG_RESULT(IRIX)
888 IF_METHOD=if_ioctl.o
889elif test "$opsys" = "openbsd";then
890 AC_MSG_RESULT(openbsd)
891 IF_METHOD=if_ioctl.o
892elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
893 AC_MSG_RESULT(sysctl)
7ea487bc 894 IF_METHOD=if_sysctl.o
895 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
19877dd2 896else
7ea487bc 897 AC_MSG_RESULT(ioctl)
898 IF_METHOD=if_ioctl.o
7ea487bc 899fi
900AC_SUBST(IF_METHOD)
19877dd2 901AC_SUBST(IOCTL_METHOD)
7ea487bc 902
42c98199 903dnl ---------------------------------------------------------------
904dnl figure out how to specify an interface in multicast sockets API
905dnl ---------------------------------------------------------------
6f0e3f6e 906AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
42c98199 907
908AC_MSG_CHECKING([for BSD struct ip_mreq hack])
909AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
910#include <sys/param.h>
c540835e 911#endif],[#if (defined(__FreeBSD__) && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
42c98199 912 return (0);
913#else
914 #error No support for BSD struct ip_mreq hack detected
915#endif],[AC_MSG_RESULT(yes)
916AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
917AC_MSG_RESULT(no))
918
c543a173
AS
919dnl ---------------------------------------------------------------
920dnl figure out how to check link-state
921dnl ---------------------------------------------------------------
6418bedf
AS
922AC_CHECK_HEADER([net/if.h],
923 [AC_CHECK_HEADER( [net/if_media.h],
924 [m4_define([LINK_DETECT_INCLUDES],
925 QUAGGA_INCLUDES
926 [#include <net/if_media.h>
927 ])
928 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
929 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
930 [], LINK_DETECT_INCLUDES)],
931 [],
932 QUAGGA_INCLUDES)],
933 [], QUAGGA_INCLUDES )
c543a173 934
0df7c91f
PJ
935dnl ------------------------
936dnl TCP_MD5SIG socket option
937dnl ------------------------
938
939AC_CHECK_HEADER([netinet/tcp.h],
940 [m4_define([MD5_INCLUDES],
941 QUAGGA_INCLUDES
942 [#include <netinet/tcp.h>
943 ])
944 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
945 [],
946 QUAGGA_INCLUDES)
947if test $ac_cv_have_decl_TCP_MD5SIG = no; then
948 AC_CHECK_HEADER([linux/tcp.h],
949 [m4_define([MD5_INCLUDES],
950 QUAGGA_INCLUDES
951 [#include <linux/tcp.h>
952 ])
953 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
954fi
955
7ea487bc 956dnl -----------------------
957dnl check proc file system.
958dnl -----------------------
cadfb2cd
SH
959if test "$netlink" != yes; then
960 if test -r /proc/net/dev; then
961 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
962 IF_PROC=if_proc.o
963 fi
964 if test -r /proc/net/if_inet6; then
965 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
966 IF_PROC=if_proc.o
967 fi
7ea487bc 968fi
969AC_SUBST(IF_PROC)
970
971dnl -----------------------------
972dnl check ipforward detect method
973dnl -----------------------------
5589ffa7
JJ
974AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
975[for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
7ea487bc 976do
5589ffa7 977 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
7ea487bc 978done
5589ffa7
JJ
979case $quagga_cv_ipforward_method in
980 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
7ea487bc 981 "/dev/ip")
982 case "$host" in
5589ffa7
JJ
983 *-nec-sysv4*) quagga_cv_ipforward_method="ews";;
984 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
985 *) quagga_cv_ipforward_method="solaris";;
7ea487bc 986 esac;;
5589ffa7 987 *) quagga_cv_ipforward_method="sysctl";;
7ea487bc 988esac])
5589ffa7 989IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
7ea487bc 990AC_SUBST(IPFORWARD)
991
992AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
993
994dnl ----------
995dnl IPv6 check
996dnl ----------
997AC_MSG_CHECKING(whether does this OS have IPv6 stack)
998if test "${enable_ipv6}" = "no"; then
999 AC_MSG_RESULT(disabled)
1000else
1001dnl ----------
1002dnl INRIA IPv6
1003dnl ----------
a159ed93 1004 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
1005 zebra_cv_ipv6=yes
1006 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
1007 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
1008 RIPNGD="ripngd"
1009 OSPF6D="ospf6d"
1010 LIB_IPV6=""
1011 AC_MSG_RESULT(INRIA IPv6)
7ea487bc 1012dnl ---------
1013dnl KAME IPv6
1014dnl ---------
a159ed93 1015 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1016 zebra_cv_ipv6=yes
1017 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
1018 AC_DEFINE(KAME,1,KAME IPv6)
1019 RIPNGD="ripngd"
1020 OSPF6D="ospf6d"
1021 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
7ea487bc 1022 LIB_IPV6="-L/usr/local/v6/lib -linet6"
a159ed93 1023 fi
1024 AC_MSG_RESULT(KAME)
71c0fb50 1025dnl -------------------------
1026dnl MUSICA IPv6
1027dnl default host check
1028dnl It is not used by Kheops
1029dnl -------------------------
a159ed93 1030 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
1031 zebra_cv_ipv6=yes
1032 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
1033 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
1034 AC_DEFINE(KAME,1,KAME IPv6 stack)
1035 RIPNGD="ripngd"
1036 OSPF6D="ospf6d"
1037 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
71c0fb50 1038 LIB_IPV6="-L/usr/local/v6/lib -linet6"
a159ed93 1039 fi
1040 AC_MSG_RESULT(MUSICA)
7ea487bc 1041dnl ---------
1042dnl NRL check
1043dnl ---------
a159ed93 1044 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1045 zebra_cv_ipv6=yes
1046 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
1047 AC_DEFINE(NRL,1,NRL)
1048 RIPNGD="ripngd"
1049 OSPF6D="ospf6d"
1050 if test x"$opsys" = x"bsdi";then
7ea487bc 1051 AC_DEFINE(BSDI_NRL,,BSDI)
1052 AC_MSG_RESULT(BSDI_NRL)
a159ed93 1053 else
7ea487bc 1054 AC_MSG_RESULT(NRL)
a159ed93 1055 fi
19877dd2 1056dnl ------------------------------------
1057dnl Solaris 9, 10 and potentially higher
1058dnl ------------------------------------
afd8a129 1059 elif test x"$opsys" = x"sol8"; then
19877dd2 1060 zebra_cv_ipv6=yes;
1061 AC_DEFINE(HAVE_IPV6, 1, IPv6)
1062 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
1063 RIPNGD="ripngd"
1064 OSPF6D="ospf6d"
1065 AC_MSG_RESULT(Solaris IPv6)
7ea487bc 1066dnl ----------
1067dnl Linux IPv6
1068dnl ----------
a159ed93 1069 elif test "${enable_ipv6}" = "yes"; then
1070 AC_EGREP_CPP(yes, [
1071 #include <linux/version.h>
1072 /* 2.1.128 or later */
1073 #if LINUX_VERSION_CODE >= 0x020180
1074 yes
1075 #endif],
1076 [zebra_cv_ipv6=yes
1077 zebra_cv_linux_ipv6=yes
1078 AC_MSG_RESULT(Linux IPv6)])
1079 else
1080 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
1081 then
7ea487bc 1082 zebra_cv_ipv6=yes
1083 zebra_cv_linux_ipv6=yes
1084 AC_MSG_RESULT(Linux IPv6)
a159ed93 1085 fi
1086 fi
7ea487bc 1087
850d39f3 1088 if test "$zebra_cv_linux_ipv6" = "yes";then
1089 AC_MSG_CHECKING(whether libc has IPv6 support)
1090 AC_TRY_LINK([#include <netinet/in.h>
1091 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
1092 [AC_MSG_RESULT(yes)
1093 zebra_cv_ipv6=yes
1094 zebra_cv_linux_ipv6=yes],
1095 [AC_MSG_RESULT(no)
1096 zebra_cv_ipv6=no
1097 zebra_cv_linux_ipv6=no])
1098 fi
1099
a159ed93 1100 if test "$zebra_cv_linux_ipv6" = "yes";then
1101 AC_MSG_CHECKING(for GNU libc >= 2.1)
1102 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
1103 AC_EGREP_CPP(yes, [
7ea487bc 1104#include <features.h>
1105#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
1106 yes
a159ed93 1107#endif],
1108 [glibc=yes
1109 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
1110 AC_MSG_RESULT(yes)],
1111 AC_MSG_RESULT(no)
1112 )
1113 RIPNGD="ripngd"
1114 OSPF6D="ospf6d"
1115 if test "$glibc" != "yes"; then
7ea487bc 1116 INCLUDES="-I/usr/inet6/include"
1117 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
1118 LIB_IPV6="-L/usr/inet6/lib -linet6"
1119 fi
a159ed93 1120 fi
1121 fi
7ea487bc 1122
1123dnl -----------------------
1124dnl Set IPv6 related values
1125dnl -----------------------
a159ed93 1126 LIBS="$LIB_IPV6 $LIBS"
1127 AC_SUBST(LIB_IPV6)
7ea487bc 1128
a159ed93 1129 if test x"$RIPNGD" = x""; then
1130 AC_MSG_RESULT(IPv4 only)
1131 fi
7ea487bc 1132fi
1133
fa3232e1 1134dnl ------------------
1135dnl IPv6 header checks
1136dnl ------------------
1137if test "x${zebra_cv_ipv6}" = "xyes"; then
1138AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
6f0e3f6e
PJ
1139 netinet6/in6_var.h netinet6/nd6.h], [], [],
1140 QUAGGA_INCLUDES)
fa3232e1 1141fi
1142
6f0e3f6e
PJ
1143m4_define([QUAGGA_INCLUDES],dnl
1144QUAGGA_INCLUDES
1145[#if HAVE_NETINET6_IN6_H
1146#include <netinet6/in6.h>
1147#endif
1148#if HAVE_NETINET_IN6_VAR_H
1149#include <netinet/in6_var.h>
1150#endif
1151#if HAVE_NETINET_ICMP6_H
1152# include <netinet/icmp6.h>
1153#endif
1154#if HAVE_NETINET6_IN6_VAR_H
1155# include <netinet6/in6_var.h>
1156#endif
1157#if HAVE_NETINET6_ND6_H
fbf24544 1158# include <netinet6/nd6.h>
6f0e3f6e
PJ
1159#endif
1160])dnl
1161
cbcd9bfc
JT
1162dnl disable doc check
1163if test "${enable_doc}" = "no";then
1164 DOC=""
1165else
1166 DOC="doc"
1167fi
1168
7ea487bc 1169dnl --------------------
1170dnl Daemon disable check
1171dnl --------------------
1172if test "${enable_zebra}" = "no";then
1173 ZEBRA=""
1174else
1175 ZEBRA="zebra"
1176fi
1177
1178if test "${enable_bgpd}" = "no";then
1179 BGPD=""
1180else
1181 BGPD="bgpd"
1182fi
1183
1184if test "${enable_ripd}" = "no";then
1185 RIPD=""
1186else
1187 RIPD="ripd"
1188fi
1189
1190if test "${enable_ospfd}" = "no";then
1191 OSPFD=""
1192else
1193 OSPFD="ospfd"
1194fi
1195
d0199430 1196if test "${enable_watchquagga}" = "no";then
1197 WATCHQUAGGA=""
1198else
1199 WATCHQUAGGA="watchquagga"
1200fi
1201
1ef74ef7 1202OSPFCLIENT=""
1203if test "${enable_opaque_lsa}" = "yes"; then
1204 if test "${enable_ospfapi}" != "no";then
9a569848 1205 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
1ef74ef7 1206
1207 if test "${enable_ospfclient}" != "no";then
1208 OSPFCLIENT="ospfclient"
1209 fi
1210 fi
1211
7ea487bc 1212fi
1213
1214case "${enable_ripngd}" in
1215 "yes") RIPNGD="ripngd";;
1216 "no" ) RIPNGD="";;
1217 * ) ;;
1218esac
1219
1220case "${enable_ospf6d}" in
1221 "yes") OSPF6D="ospf6d";;
1222 "no" ) OSPF6D="";;
1223 * ) ;;
1224esac
1225
9e867fe6 1226case "${enable_isisd}" in
1227 "yes") ISISD="isisd";;
1228 "no" ) ISISD="";;
ae399ab0 1229 * ) ;;
9e867fe6 1230esac
1231
97cee877
GT
1232# XXX Perhaps auto-enable on Solaris, but that's messy for cross builds.
1233case "${enable_solaris}" in
1234 "yes") SOLARIS="solaris";;
1235 "no" ) SOLARIS="";;
1236 * ) ;;
1237esac
1238
7ea487bc 1239if test "${enable_bgp_announce}" = "no";then
750e8146
PJ
1240 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1241else
1242 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
7ea487bc 1243fi
1244
cbcd9bfc 1245AC_SUBST(DOC)
7ea487bc 1246AC_SUBST(ZEBRA)
1247AC_SUBST(BGPD)
1248AC_SUBST(RIPD)
1249AC_SUBST(RIPNGD)
1250AC_SUBST(OSPFD)
1251AC_SUBST(OSPF6D)
d0199430 1252AC_SUBST(WATCHQUAGGA)
9e867fe6 1253AC_SUBST(ISISD)
97cee877 1254AC_SUBST(SOLARIS)
7ea487bc 1255AC_SUBST(VTYSH)
1256AC_SUBST(INCLUDES)
1257AC_SUBST(CURSES)
1258AC_SUBST(OSPFCLIENT)
1ef74ef7 1259AC_SUBST(OSPFAPI)
7ea487bc 1260AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1261AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1262AC_CHECK_LIB(crypt, crypt)
1263AC_CHECK_LIB(resolv, res_init)
7ea487bc 1264
1265dnl ---------------------------------------------------
1266dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1267dnl ---------------------------------------------------
a159ed93 1268AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1269AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1270AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
7ea487bc 1271
25f45887
JJ
1272dnl ---------------------------
1273dnl check system has PCRE regexp
1274dnl ---------------------------
1275if test "x$enable_pcreposix" = "xyes"; then
1276 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1277 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1278fi
1279
1280if test "x$enable_pcreposix" != "xyes"; then
7ea487bc 1281dnl ---------------------------
1282dnl check system has GNU regexp
1283dnl ---------------------------
25f45887 1284AC_MSG_CHECKING(whether system has GNU regex)
7ea487bc 1285AC_CHECK_LIB(c, regexec,
1286[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1287 LIB_REGEX=""],
1288[LIB_REGEX="regex.o"])
25f45887
JJ
1289fi
1290AC_SUBST(HAVE_LIBPCREPOSIX)
7ea487bc 1291AC_SUBST(LIB_REGEX)
1292
1293dnl ------------------
b1fc9acb 1294dnl check Net-SNMP library
7ea487bc 1295dnl ------------------
b1fc9acb 1296if test "${enable_snmp}" = "yes"; then
fb62a3ce
JT
1297 if test "$with_crypto" != "no"; then
1298 LIBS="${LIBS} -lcrypto";
1299 fi
b1fc9acb 1300 AC_CHECK_LIB(netsnmp, asn_parse_int,
1301 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1302 AC_DEFINE(HAVE_SNMP,,SNMP)
1303 LIBS="${LIBS} -lnetsnmp"],
1304 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
fb62a3ce
JT
1305
1306 AC_CHECK_HEADER([net-snmp/net-snmp-config.h],
1307 [],
1308 [AC_MSG_ERROR([--enable-snmp given, but cannot find net-snmp-config.h])],
1309 QUAGGA_INCLUDES)
b1fc9acb 1310 AC_SUBST(SNMP_INCLUDES)
6cf9df08 1311fi
1312
7ea487bc 1313dnl ---------------------------
6f0e3f6e 1314dnl sockaddr and netinet checks
7ea487bc 1315dnl ---------------------------
6f0e3f6e
PJ
1316AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1317 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
1318 socklen_t,
1319 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1320 struct nd_opt_adv_interval, struct rt_addrinfo,
11770e10 1321 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
6f0e3f6e
PJ
1322 [], [], QUAGGA_INCLUDES)
1323
1324AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1325 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1326 struct sockaddr_in6.sin6_scope_id,
1327 struct if6_aliasreq.ifra_lifetime,
1328 struct nd_opt_adv_interval.nd_opt_ai_type],
1329 [], [], QUAGGA_INCLUDES)
29c4c9bd 1330
6f0e3f6e 1331dnl ---------------------------
11770e10 1332dnl IRDP/pktinfo/icmphdr checks
6f0e3f6e
PJ
1333dnl ---------------------------
1334AC_CHECK_TYPES([struct in_pktinfo],
11770e10
PJ
1335 [AC_CHECK_TYPES([struct icmphdr],
1336 [if test "${enable_irdp}" != "no"; then
1337 AC_DEFINE(HAVE_IRDP,, IRDP)
1338 fi],
1339 [if test "${enable_irdp}" = "yes"; then
1340 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1341 fi], [QUAGGA_INCLUDES])],
6f0e3f6e
PJ
1342 [if test "${enable_irdp}" = "yes"; then
1343 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1344 fi], [QUAGGA_INCLUDES])
29c4c9bd 1345
7ea487bc 1346dnl --------------------------------------
1347dnl checking for getrusage struct and call
1348dnl --------------------------------------
1349AC_MSG_CHECKING(whether getrusage is available)
1350AC_TRY_COMPILE([#include <sys/resource.h>
1351],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1352[AC_MSG_RESULT(yes)
1353 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1354 AC_MSG_RESULT(no))
1355
c4376c9d
SH
1356dnl --------------------------------------
1357dnl checking for clock_time monotonic struct and call
1358dnl --------------------------------------
6511cab2
PJ
1359AC_CHECK_DECL(CLOCK_MONOTONIC,
1360 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
9964fcfc 1361 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
6511cab2 1362], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
c4376c9d 1363
edd7c245 1364dnl -------------------
1365dnl capabilities checks
1366dnl -------------------
41d3fc96 1367if test "${enable_capabilities}" != "no"; then
1368 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1369 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1370 [AC_MSG_RESULT(yes)
1371 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1372 quagga_ac_keepcaps="yes"],
1373 AC_MSG_RESULT(no)
edd7c245 1374 )
41d3fc96 1375 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1376 AC_CHECK_HEADERS(sys/capability.h)
1377 fi
1378 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1379 AC_CHECK_LIB(cap, cap_init,
1380 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1381 LIBCAP="-lcap"
ceacedba 1382 quagga_ac_lcaps="yes"]
41d3fc96 1383 )
ceacedba 1384 else
1385 AC_CHECK_HEADERS(priv.h,
1386 [AC_MSG_CHECKING(Solaris style privileges are available)
1387 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1388 [AC_MSG_RESULT(yes)
1389 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1390 quagga_ac_scaps="yes"],
1391 AC_MSG_RESULT(no)
1392 )
1393 ]
1394 )
1395 fi
1396 if test x"${quagga_ac_scaps}" = x"yes" \
1397 -o x"${quagga_ac_lcaps}" = x"yes"; then
1398 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
41d3fc96 1399 fi
edd7c245 1400fi
1401AC_SUBST(LIBCAP)
1402
fb2d1502 1403dnl ---------------------------
1404dnl check for glibc 'backtrace'
1405dnl ---------------------------
1406if test "${glibc}" = "yes"; then
fb66b29c
PJ
1407 AC_CHECK_HEADER([execinfo.h],
1408 [AC_CHECK_FUNC([backtrace],
1409 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1410 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1411 ])
1412 ])
fb2d1502 1413fi
1414
41be32bf
PJ
1415dnl -----------------------------------------
1416dnl check for malloc mallinfo struct and call
1417dnl this must try and link using LIBS, in
1418dnl order to check no alternative allocator
1419dnl has been specified, which might not provide
1420dnl mallinfo, e.g. such as Umem on Solaris.
1421dnl -----------------------------------------
6f0e3f6e 1422AC_CHECK_HEADER([malloc.h],
41be32bf
PJ
1423 [AC_MSG_CHECKING(whether mallinfo is available)
1424 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1425 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1426 [AC_MSG_RESULT(yes)
1427 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1428 AC_MSG_RESULT(no)
1429 )
6f0e3f6e 1430 ], [], QUAGGA_INCLUDES)
41be32bf 1431
408ad943 1432dnl ----------
1433dnl configure date
1434dnl ----------
1435CONFDATE=`date '+%Y%m%d'`
1436AC_SUBST(CONFDATE)
1437
46bc0e43 1438dnl Conditionally enable PIE support for GNU toolchains.
46bc0e43 1439AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
0e9de56d 1440if test "$enable_pie" != "no"; then
46bc0e43
PKJ
1441 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1442 save_CFLAGS=$CFLAGS
1443 save_LDFLAGS=$LDFLAGS
1444 CFLAGS="$CFLAGS -fPIE"
1445 LDFLAGS="$LDFLAGS -pie"
1446 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1447 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1448 )
1449 CFLAGS=$save_CFLAGS
1450 LDFLAGS=$save_LDFLAGS
1451 ])
1452 if test "$ap_cv_cc_pie" = "yes"; then
1453 PICFLAGS="-fPIE"
1454 PILDFLAGS="-pie"
1455 fi
1456fi
1457
1458AC_SUBST(PICFLAGS)
1459AC_SUBST(PILDFLAGS)
1460
7ea487bc 1461dnl ------------------------------
a159ed93 1462dnl set paths for state directory
23bd12c3 1463dnl ------------------------------
e84999d9 1464AC_MSG_CHECKING(directory to use for state file)
23bd12c3 1465if test "${prefix}" = "NONE"; then
e8f2984c 1466 quagga_statedir_prefix="";
23bd12c3 1467else
e8f2984c 1468 quagga_statedir_prefix=${prefix}
23bd12c3 1469fi
1470if test "${localstatedir}" = '${prefix}/var'; then
e84999d9 1471 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
e8f2984c 1472 ${quagga_statedir_prefix}/var/adm dnl
1473 ${quagga_statedir_prefix}/etc dnl
a159ed93 1474 /var/run dnl
1475 /var/adm dnl
1476 /etc dnl
1477 /dev/null;
23bd12c3 1478 do
e8f2984c 1479 test -d $QUAGGA_STATE_DIR && break
23bd12c3 1480 done
e84999d9 1481 quagga_statedir=$QUAGGA_STATE_DIR
23bd12c3 1482else
e8f2984c 1483 quagga_statedir=${localstatedir}
a159ed93 1484fi
e8f2984c 1485if test $quagga_statedir = "/dev/null"; then
a159ed93 1486 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1487fi
e84999d9
JJ
1488AC_MSG_RESULT(${quagga_statedir})
1489AC_SUBST(quagga_statedir)
a159ed93 1490
e8f2984c 1491AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1492AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1493AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1494AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1495AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1496AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
9e867fe6 1497AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
d0199430 1498AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
e8f2984c 1499AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1500AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1501AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1502AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1503AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1504AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1505AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
9e867fe6 1506AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
515210bd 1507AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
7ea487bc 1508
1eb8ef25 1509dnl -------------------------------
1510dnl Quagga sources should always be
1511dnl current wrt interfaces. Dont
1512dnl allow deprecated interfaces to
1513dnl be exposed.
1514dnl -------------------------------
1515AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1516
7ea487bc 1517dnl ---------------------------
1518dnl Check htonl works correctly
1519dnl ---------------------------
1520AC_MSG_CHECKING(for working htonl)
6f0e3f6e
PJ
1521AC_CACHE_VAL(ac_cv_htonl_works,
1522 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1523 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1524 ]
1525)
7ea487bc 1526AC_MSG_RESULT($ac_cv_htonl_works)
1527
14c17fd8 1528AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
d0199430 1529 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
9e867fe6 1530 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
14c17fd8 1531 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
69f1fc22 1532 pkgsrc/Makefile
670bbf19 1533 redhat/quagga.spec
b7a97f82 1534 lib/version.h
14c17fd8 1535 doc/defines.texi
f695b01f 1536 isisd/topology/Makefile
cbd04084 1537 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
f31293af 1538 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
26275b05 1539AC_CONFIG_FILES([solaris/Makefile])
1540
670bbf19 1541AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
48577196 1542## Hack, but working solution to avoid rebuilding of quagga.info.
1543## It's already in CVS until texinfo 4.7 is more common.
14c17fd8 1544AC_OUTPUT
7ea487bc 1545
1546echo "
c89f6494 1547Quagga configuration
1548--------------------
1549quagga version : ${PACKAGE_VERSION}
cdb99504 1550host operating system : ${host_os}
7ea487bc 1551source code location : ${srcdir}
1552compiler : ${CC}
1553compiler flags : ${CFLAGS}
6f0e3f6e 1554make : ${MAKE-make}
2d58228e 1555includes : ${INCLUDES} ${SNMP_INCLUDES}
6f0e3f6e 1556linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
e8f2984c 1557state file directory : ${quagga_statedir}
dc7a2bf1 1558config file directory : `eval echo \`echo ${sysconfdir}\``
d6b72f7a 1559example directory : `eval echo \`echo ${exampledir}\``
8d4aee5d 1560user to run as : ${enable_user}
1561group to run as : ${enable_group}
1562group for vty sockets : ${enable_vty_group}
aa593d5e 1563config file mask : ${enable_configfile_mask}
1564log file mask : ${enable_logfile_mask}
dc7a2bf1 1565
1566The above user and group must have read/write access to the state file
105b8239
PJ
1567directory and to the config files in the config file directory."
1568
1569if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1570Warning: The ${MAKE-make} programme detected, either in your path or
1571via the MAKE variable, is not GNU Make. GNU make may be installed as
1572gmake on some systems. and is required to complete a build of Quagga
1573" > /dev/stderr
1574fi