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