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