]> git.proxmox.com Git - mirror_frr.git/blob - configure.ac
2005-01-05 Paul Jakma <paul@dishone.st>
[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 ## $Id: configure.ac,v 1.84 2005/01/05 11:58:31 paul Exp $
9 AC_PREREQ(2.53)
10
11 AC_INIT(Quagga, 0.97.5, [http://bugzilla.quagga.net])
12 AC_CONFIG_SRCDIR(lib/zebra.h)
13 AM_INIT_AUTOMAKE(1.6)
14 AM_CONFIG_HEADER(config.h)
15
16 dnl default is to match previous behavior
17 exampledir=${sysconfdir}
18 AC_ARG_ENABLE([exampledir],
19 AC_HELP_STRING([--enable-exampledir],
20 [specify alternate directory for examples]),
21 exampledir="$enableval",)
22 dnl XXX add --exampledir to autoconf standard directory list somehow
23 AC_SUBST(exampledir)
24
25 dnl default is to match previous behavior
26 pkgsrcrcdir=""
27 pkgsrcdir=""
28 AC_ARG_ENABLE([pkgsrcrcdir],
29 AC_HELP_STRING([--enable-pkgsrcrcdir],
30 [specify directory for rc.d scripts]),
31 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
32 dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
33 AC_SUBST(pkgsrcdir)
34 AC_SUBST(pkgsrcrcdir)
35
36 dnl -----------------------------------
37 dnl Get hostname and other information.
38 dnl -----------------------------------
39 AC_CANONICAL_HOST
40
41 dnl ------------
42 dnl Check CFLAGS
43 dnl ------------
44 AC_ARG_WITH(cflags,
45 [ --with-cflags Set CFLAGS for use in compilation.])
46 if test "x$with_cflags" != "x" ; then
47 CFLAGS="$with_cflags" ; cflags_specified=yes ;
48 elif test -n "$CFLAGS" ; then
49 cflags_specified=yes ;
50 fi
51
52 dnl --------
53 dnl Check CC
54 dnl --------
55 AC_PROG_CC
56
57 dnl ---------------------------------------------
58 dnl If CLFAGS doesn\'t exist set default value
59 dnl AC_PROG_CC will have set minimal default
60 dnl already, eg "-O2 -g" for gcc, "-g" for others
61 dnl (Wall is gcc specific... have to make sure
62 dnl gcc is being used before setting it)
63 dnl ---------------------------------------------
64 dnl
65 if test "x$cflags_specified" = "x" ; then
66 if test "x${GCC}" = "xyes"; then
67 CFLAGS="-Os -g -Wall -Wsign-compare -Wpointer-arith"
68 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
69 fi
70 # TODO: conditionally addd -Wpacked if handled
71 fi
72
73 dnl --------------
74 dnl Check programs
75 dnl --------------
76 AC_PROG_CPP
77 AC_PROG_INSTALL
78 AC_PROG_MAKE_SET
79 AC_CHECK_TOOL(AR, ar)
80 AC_CHECK_TOOL(RANLIB, ranlib, :)
81
82 dnl ---------
83 dnl AIX check
84 dnl ---------
85 AC_AIX
86
87 dnl -------
88 dnl libtool
89 dnl -------
90 AC_PROG_LIBTOOL
91
92 dnl ----------------------
93 dnl Packages configuration
94 dnl ----------------------
95 AC_ARG_ENABLE(vtysh,
96 [ --enable-vtysh include integrated vty shell for Quagga])
97 AC_ARG_ENABLE(ipv6,
98 [ --disable-ipv6 turn off IPv6 related features and daemons])
99 AC_ARG_ENABLE(zebra,
100 [ --disable-zebra do not build zebra daemon])
101 AC_ARG_ENABLE(bgpd,
102 [ --disable-bgpd do not build bgpd])
103 AC_ARG_ENABLE(ripd,
104 [ --disable-ripd do not build ripd])
105 AC_ARG_ENABLE(ripngd,
106 [ --disable-ripngd do not build ripngd])
107 AC_ARG_ENABLE(ospfd,
108 [ --disable-ospfd do not build ospfd])
109 AC_ARG_ENABLE(ospf6d,
110 [ --disable-ospf6d do not build ospf6d])
111 AC_ARG_ENABLE(watchquagga,
112 [ --disable-watchquagga do not build watchquagga])
113 AC_ARG_ENABLE(isisd,
114 [ --enable-isisd build isisd])
115 AC_ARG_ENABLE(bgp-announce,
116 [ --disable-bgp-announce, turn off BGP route announcement])
117 AC_ARG_ENABLE(netlink,
118 [ --enable-netlink force to use Linux netlink interface])
119 AC_ARG_ENABLE(broken-aliases,
120 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
121 AC_ARG_ENABLE(snmp,
122 [ --enable-snmp enable SNMP support])
123 AC_ARG_WITH(libpam,
124 [ --with-libpam use libpam for PAM support in vtysh])
125 AC_ARG_ENABLE(tcp-zebra,
126 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
127 AC_ARG_ENABLE(opaque-lsa,
128 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
129 AC_ARG_ENABLE(ospfapi,
130 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
131 (this is the default if --enable-opaque-lsa is not set)])
132 AC_ARG_ENABLE(ospfclient,
133 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
134 (this is the default if --disable-ospfapi is set)])
135 AC_ARG_ENABLE(ospf-te,
136 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
137 AC_ARG_ENABLE(multipath,
138 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
139 AC_ARG_ENABLE(quagga_user,
140 [ --enable-user=ARG user to run Quagga suite as (default quagga)])
141 AC_ARG_ENABLE(quagga_group,
142 [ --enable-group=ARG group to run Quagga suite as (default quagga)])
143 AC_ARG_ENABLE(vty_group,
144 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
145 AC_ARG_ENABLE(configfile_mask,
146 [ --enable-configfile-mask=ARG set mask for config files])
147 AC_ARG_ENABLE(logfile_mask,
148 [ --enable-logfile-mask=ARG set mask for log files])
149
150 AC_ARG_ENABLE(rtadv,
151 [ --disable-rtadv disable IPV6 router advertisement feature])
152 AC_ARG_ENABLE(irdp,
153 [ --enable-irdp enable IRDP server support in zebra])
154 AC_ARG_ENABLE(capabilities,
155 [ --disable-capabilities disable using POSIX capabilities])
156 AC_ARG_ENABLE(gcc_ultra_verbose,
157 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
158 AC_ARG_ENABLE(gcc-rdynamic,
159 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
160
161 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
162 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
163 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
164 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
165 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
166 fi
167
168 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
169 LDFLAGS="${LDFLAGS} -rdynamic"
170 fi
171
172 if test "${enable_broken_aliases}" = "yes"; then
173 if test "${enable_netlink}" = "yes"
174 then
175 echo "Sorry, you can't use netlink with broken aliases"
176 exit 1
177 fi
178 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
179 enable_netlink=no
180 fi
181
182 if test "${enable_tcp_zebra}" = "yes"; then
183 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
184 fi
185
186 if test "${enable_opaque_lsa}" = "yes"; then
187 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
188 fi
189
190 if test "${enable_ospf_te}" = "yes"; then
191 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
192 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
193 fi
194
195 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
196 if test "${enable_rtadv}" != "no"; then
197 AC_MSG_RESULT(yes)
198 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
199 else
200 AC_MSG_RESULT(no)
201 fi
202
203 if test "${enable_irdp}" = "yes"; then
204 AC_DEFINE(HAVE_IRDP,, IRDP )
205 fi
206
207 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
208 enable_user="quagga"
209 elif test "${enable_user}" = "no"; then
210 enable_user="root"
211 fi
212 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
213
214 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
215 enable_group="quagga"
216 elif test "${enable_group}" = "no"; then
217 enable_group="root"
218 fi
219 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
220
221 if test x"${enable_vty_group}" = x"yes" ; then
222 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
223 elif test x"${enable_vty_group}" != x""; then
224 if test x"${enable_vty_group}" != x"no"; then
225 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
226 fi
227 fi
228
229 enable_configfile_mask=${enable_configfile_mask:-0600}
230 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
231
232 enable_logfile_mask=${enable_logfile_mask:-0600}
233 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
234
235 changequote(, )dnl
236
237 MULTIPATH_NUM=1
238
239 case "${enable_multipath}" in
240 [0-9]|[1-9][0-9])
241 MULTIPATH_NUM="${enable_multipath}"
242 ;;
243 "")
244 ;;
245 *)
246 echo "Please specify digit to --enable-multipath ARG."
247 exit 1
248 ;;
249 esac
250
251 changequote([, ])dnl
252
253 AC_SUBST(MULTIPATH_NUM)
254
255 dnl -------------------
256 dnl Check header files.
257 dnl -------------------
258 AC_HEADER_STDC
259 AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
260 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
261 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
262 libutil.h limits.h])
263
264 AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
265 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
266 net/if.h net/if_var.h netinet/in_var.h])
267
268 dnl V6 headers are checked below, after we check for v6
269
270 dnl check some types
271 AC_C_CONST
272 dnl AC_TYPE_PID_T
273 AC_TYPE_SIGNAL
274
275 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
276 case "$host" in
277 [*-sunos5.[6-8]*] | [*-solaris2.[6-8]*])
278 opsys=sol2-6
279 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.8)
280 AC_DEFINE(SUNOS_5, 1, SunOS 5)
281 AC_CHECK_LIB(xnet, main)
282 CURSES=-lcurses
283 ;;
284 [*-sunos5.[8-9]] | [*-sunos5.1[0-9]] \
285 | [*-solaris2.[8-9]] | [*-solaris2.1[0-9]])
286 opsys=sol9
287 AC_DEFINE(SUNOS_59,,SunOS 5.9 up)
288 AC_DEFINE(SUNOS_5, 1, SunOS 5)
289 AC_CHECK_LIB(socket, main)
290 AC_CHECK_LIB(nsl, main)
291 CURSES=-lcurses
292 ;;
293 *-sunos5* | *-solaris2*)
294 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
295 AC_CHECK_LIB(socket, main)
296 AC_CHECK_LIB(nsl, main)
297 CURSES=-lcurses
298 ;;
299 *-linux-*)
300 opsys=gnu-linux
301 AC_DEFINE(GNU_LINUX,,GNU Linux)
302 ;;
303 *-nec-sysv4*)
304 AC_CHECK_LIB(nsl, gethostbyname)
305 AC_CHECK_LIB(socket, socket)
306 ;;
307 *-freebsd3.2)
308 AC_DEFINE(FREEBSD_32,,FreeBSD 3.2)
309 ;;
310 *-openbsd*)
311 opsys=openbsd
312 AC_DEFINE(OPEN_BSD,,OpenBSD)
313 ;;
314 *-bsdi*)
315 opsys=bsdi
316 OTHER_METHOD="mtu_kvm.o"
317 AC_CHECK_LIB(kvm, main)
318 ;;
319 *-irix6.5)
320 opsys=irix
321 AC_DEFINE(IRIX_65,,IRIX 6.5)
322 ;;
323 esac
324
325 dnl ---------------------
326 dnl Integrated VTY option
327 dnl ---------------------
328 case "${enable_vtysh}" in
329 "yes") VTYSH="vtysh";
330 AC_DEFINE(VTYSH,,VTY shell)
331 AC_PATH_PROG(PERL, perl)
332 dnl Vtysh uses libreadline, which looks for termcap functions at
333 dnl configure time. We follow readline's search order.
334 dnl The required procedures are in libtermcap on NetBSD, in
335 dnl [TODO] on Linux, and in [TODO] on Solaris.
336 AC_CHECK_LIB(termcap, tputs, ,
337 AC_CHECK_LIB(tinfo, tputs, ,
338 AC_CHECK_LIB(curses, tputs, ,
339 AC_CHECK_LIB(ncurses, tputs))))
340 AC_CHECK_LIB(readline, main)
341 if test $ac_cv_lib_readline_main = no; then
342 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
343 fi
344 AC_CHECK_HEADER(readline/history.h)
345 if test $ac_cv_header_readline_history_h = no;then
346 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
347 fi
348 AC_CHECK_LIB(readline, rl_completion_matches)
349 if test $ac_cv_lib_readline_rl_completion_matches = no; then
350 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
351 fi
352 ;;
353 "no" ) VTYSH="";;
354 * ) ;;
355 esac
356
357 dnl ----------
358 dnl PAM module
359 dnl ----------
360 if test "$with_libpam" = "yes"; then
361 AC_CHECK_HEADER(security/pam_misc.h)
362 if test "$ac_cv_header_security_pam_misc_h" = yes; then
363 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
364 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
365 pam_conv_func="misc_conv"
366 fi
367 AC_CHECK_HEADER(security/openpam.h)
368 if test "$ac_cv_header_security_openpam_h" = yes; then
369 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
370 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
371 pam_conv_func="openpam_ttyconv"
372 fi
373 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
374 AC_MSG_WARN([*** pam support will not be built ***])
375 with_libpam="no"
376 fi
377 fi
378
379 if test "$with_libpam" = "yes"; then
380 dnl took this test from proftpd's configure.in and suited to our needs
381 dnl -------------------------------------------------------------------------
382 dnl
383 dnl This next check looks funky due to a linker problem with some versions
384 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
385 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
386 dnl with RedHat 6.2 and Debian 2.2 or better.
387 AC_CHECK_LIB(pam, pam_start,
388 [AC_CHECK_LIB(pam, $pam_conv_func,
389 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
390 LIBPAM="-lpam"],
391 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
392 LIBPAM="-lpam -lpam_misc"]
393 )
394 ],
395
396 [AC_CHECK_LIB(pam, pam_end,
397 [AC_CHECK_LIB(pam, $pam_conv_func,
398 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
399 LIBPAM="-lpam -ldl"],
400 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
401 LIBPAM="-lpam -ldl -lpam_misc"]
402 )
403 ],AC_MSG_WARN([*** pam support will not be built ***]),
404 [-ldl])
405 ]
406 )
407 fi
408 AC_SUBST(LIBPAM)
409
410 dnl -------------------------------
411 dnl Endian-ness check
412 dnl -------------------------------
413 AC_WORDS_BIGENDIAN
414
415 dnl -------------------------------
416 dnl check the size in byte of the C
417 dnl -------------------------------
418 dnl AC_CHECK_SIZEOF(char)
419 dnl AC_CHECK_SIZEOF(int)
420 dnl AC_CHECK_SIZEOF(short)
421 dnl AC_CHECK_SIZEOF(long)
422
423 dnl ----------------------------
424 dnl check existance of functions
425 dnl ----------------------------
426 AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
427 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
428 fcntl)
429 AC_CHECK_FUNCS(setproctitle, ,
430 [AC_CHECK_LIB(util, setproctitle,
431 [LIBS="$LIBS -lutil"
432 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
433 ]
434 )
435 ]
436 )
437
438 dnl ------------------------------------
439 dnl Determine routing get and set method
440 dnl ------------------------------------
441 AC_MSG_CHECKING(zebra between kernel interface method)
442 if test x"$opsys" = x"gnu-linux"; then
443 if test "${enable_netlink}" = "yes";then
444 AC_MSG_RESULT(netlink)
445 RT_METHOD=rt_netlink.o
446 AC_DEFINE(HAVE_NETLINK,,netlink)
447 netlink=yes
448 elif test "${enable_netlink}" = "no"; then
449 AC_MSG_RESULT(ioctl)
450 RT_METHOD=rt_ioctl.o
451 netlink=no
452 else
453 AC_MSG_RESULT(netlink)
454 RT_METHOD=rt_netlink.o
455 AC_DEFINE(HAVE_NETLINK,,netlink)
456 netlink=yes
457 fi
458 elif test x"$opsys" = x"sol2-6";then
459 AC_MSG_RESULT(Route socket)
460 KERNEL_METHOD="kernel_socket.o"
461 RT_METHOD="rt_socket.o"
462 elif test x"$opsys" = x"sol9";then
463 AC_MSG_RESULT(Route socket)
464 KERNEL_METHOD="kernel_socket.o"
465 RT_METHOD="rt_socket.o"
466 elif test "$opsys" = "irix" ; then
467 AC_MSG_RESULT(Route socket)
468 KERNEL_METHOD="kernel_socket.o"
469 RT_METHOD="rt_socket.o"
470 else
471 AC_TRY_RUN([#include <errno.h>
472 #include <sys/types.h>
473 #include <sys/socket.h>
474
475 main ()
476 {
477 int ac_sock;
478
479 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
480 if (ac_sock < 0 && errno == EINVAL)
481 exit (1);
482 exit (0);
483 }],
484 [KERNEL_METHOD=kernel_socket.o
485 RT_METHOD=rt_socket.o
486 AC_MSG_RESULT(socket)],
487 [RT_METHOD=rt_ioctl.o
488 AC_MSG_RESULT(ioctl)],
489 [KERNEL_METHOD=kernel_socket.o
490 RT_METHOD=rt_socket.o
491 AC_MSG_RESULT(socket)])
492 fi
493 AC_SUBST(RT_METHOD)
494 AC_SUBST(KERNEL_METHOD)
495 AC_SUBST(OTHER_METHOD)
496
497 dnl ------------------------------------
498 dnl check for broken CMSG_FIRSTHDR macro
499 dnl ------------------------------------
500 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
501 AC_TRY_RUN([
502 #ifdef SUNOS_5
503 #define _XPG4_2
504 #define __EXTENSIONS__
505 #endif
506 #include <stdlib.h>
507 #include <sys/types.h>
508 #include <sys/socket.h>
509
510 main()
511 {
512 struct msghdr msg;
513 char buf[4];
514
515 msg.msg_control = buf;
516 msg.msg_controllen = 0;
517
518 if (CMSG_FIRSTHDR(&msg) != NULL)
519 exit(0);
520 exit (1);
521 }],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
522 [AC_MSG_RESULT(no)])
523
524 dnl ------------------------------
525 dnl check kernel route read method
526 dnl ------------------------------
527 AC_CACHE_CHECK(route read method check, zebra_rtread,
528 [if test "$netlink" = yes; then
529 RTREAD_METHOD="rtread_netlink.o"
530 zebra_rtread="netlink"
531 else
532 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
533 do
534 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
535 done
536 case $zebra_rtread in
537 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
538 zebra_rtread="proc";;
539 "/dev/ip")
540 case "$host" in
541 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
542 zebra_rtread="sysctl";;
543 *) RTREAD_METHOD="rtread_getmsg.o"
544 zebra_rtread="getmsg";;
545 esac;;
546 *) RTREAD_METHOD="rtread_sysctl.o"
547 zebra_rtread="sysctl";;
548 esac
549 fi])
550 AC_SUBST(RTREAD_METHOD)
551
552 dnl -----------------------------
553 dnl check interface lookup method
554 dnl -----------------------------
555 IOCTL_METHOD=ioctl.o
556 AC_MSG_CHECKING(interface looking up method)
557 if test "$netlink" = yes; then
558 AC_MSG_RESULT(netlink)
559 IF_METHOD=if_netlink.o
560 elif test "$opsys" = "sol2-6";then
561 AC_MSG_RESULT(Solaris GIF)
562 IF_METHOD=if_ioctl.o
563 elif test "$opsys" = "sol9";then
564 AC_MSG_RESULT(Solaris GLIF)
565 IF_METHOD=if_ioctl_solaris.o
566 IOCTL_METHOD=ioctl_solaris.o
567 elif test "$opsys" = "irix" ; then
568 AC_MSG_RESULT(IRIX)
569 IF_METHOD=if_ioctl.o
570 elif test "$opsys" = "openbsd";then
571 AC_MSG_RESULT(openbsd)
572 IF_METHOD=if_ioctl.o
573 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
574 AC_MSG_RESULT(sysctl)
575 IF_METHOD=if_sysctl.o
576 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
577 else
578 AC_MSG_RESULT(ioctl)
579 IF_METHOD=if_ioctl.o
580 fi
581 AC_SUBST(IF_METHOD)
582 AC_SUBST(IOCTL_METHOD)
583
584 dnl -----------------------
585 dnl check proc file system.
586 dnl -----------------------
587 if test -r /proc/net/dev; then
588 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
589 IF_PROC=if_proc.o
590 fi
591
592 if test -r /proc/net/if_inet6; then
593 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
594 IF_PROC=if_proc.o
595 fi
596 AC_SUBST(IF_PROC)
597
598 dnl -----------------------------
599 dnl check ipforward detect method
600 dnl -----------------------------
601 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
602 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
603 do
604 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
605 done
606 case $zebra_ipforward_path in
607 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
608 zebra_ipforward_path="proc";;
609 "/dev/ip")
610 case "$host" in
611 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
612 zebra_ipforward_path="ews";;
613 *-freebsd*) IPFORWARD=ipforward_sysctl.o
614 zebra_ipforward_path="sysctl";;
615 *) IPFORWARD=ipforward_solaris.o
616 zebra_ipforward_path="solaris";;
617 esac;;
618 *) IPFORWARD=ipforward_sysctl.o
619 zebra_ipforward_path="sysctl";;
620 esac])
621 AC_SUBST(IPFORWARD)
622
623 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
624
625 dnl ----------
626 dnl IPv6 check
627 dnl ----------
628 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
629 if test "${enable_ipv6}" = "no"; then
630 AC_MSG_RESULT(disabled)
631 else
632 dnl ----------
633 dnl INRIA IPv6
634 dnl ----------
635 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
636 zebra_cv_ipv6=yes
637 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
638 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
639 RIPNGD="ripngd"
640 OSPF6D="ospf6d"
641 LIB_IPV6=""
642 AC_MSG_RESULT(INRIA IPv6)
643 dnl ---------
644 dnl KAME IPv6
645 dnl ---------
646 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
647 zebra_cv_ipv6=yes
648 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
649 AC_DEFINE(KAME,1,KAME IPv6)
650 RIPNGD="ripngd"
651 OSPF6D="ospf6d"
652 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
653 LIB_IPV6="-L/usr/local/v6/lib -linet6"
654 fi
655 AC_MSG_RESULT(KAME)
656 dnl -------------------------
657 dnl MUSICA IPv6
658 dnl default host check
659 dnl It is not used by Kheops
660 dnl -------------------------
661 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
662 zebra_cv_ipv6=yes
663 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
664 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
665 AC_DEFINE(KAME,1,KAME IPv6 stack)
666 RIPNGD="ripngd"
667 OSPF6D="ospf6d"
668 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
669 LIB_IPV6="-L/usr/local/v6/lib -linet6"
670 fi
671 AC_MSG_RESULT(MUSICA)
672 dnl ---------
673 dnl NRL check
674 dnl ---------
675 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
676 zebra_cv_ipv6=yes
677 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
678 AC_DEFINE(NRL,1,NRL)
679 RIPNGD="ripngd"
680 OSPF6D="ospf6d"
681 if test x"$opsys" = x"bsdi";then
682 AC_DEFINE(BSDI_NRL,,BSDI)
683 AC_MSG_RESULT(BSDI_NRL)
684 else
685 AC_MSG_RESULT(NRL)
686 fi
687 dnl ------------------------------------
688 dnl Solaris 9, 10 and potentially higher
689 dnl ------------------------------------
690 elif test x"$opsys" = x"sol9"; then
691 zebra_cv_ipv6=yes;
692 AC_DEFINE(HAVE_IPV6, 1, IPv6)
693 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
694 RIPNGD="ripngd"
695 OSPF6D="ospf6d"
696 AC_MSG_RESULT(Solaris IPv6)
697 dnl ----------
698 dnl Linux IPv6
699 dnl ----------
700 elif test "${enable_ipv6}" = "yes"; then
701 AC_EGREP_CPP(yes, [
702 #include <linux/version.h>
703 /* 2.1.128 or later */
704 #if LINUX_VERSION_CODE >= 0x020180
705 yes
706 #endif],
707 [zebra_cv_ipv6=yes
708 zebra_cv_linux_ipv6=yes
709 AC_MSG_RESULT(Linux IPv6)])
710 else
711 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
712 then
713 zebra_cv_ipv6=yes
714 zebra_cv_linux_ipv6=yes
715 AC_MSG_RESULT(Linux IPv6)
716 fi
717 fi
718
719 if test "$zebra_cv_linux_ipv6" = "yes";then
720 AC_MSG_CHECKING(for GNU libc >= 2.1)
721 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
722 AC_EGREP_CPP(yes, [
723 #include <features.h>
724 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
725 yes
726 #endif],
727 [glibc=yes
728 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
729 AC_MSG_RESULT(yes)],
730 AC_MSG_RESULT(no)
731 )
732 RIPNGD="ripngd"
733 OSPF6D="ospf6d"
734 if test "$glibc" != "yes"; then
735 INCLUDES="-I/usr/inet6/include"
736 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
737 LIB_IPV6="-L/usr/inet6/lib -linet6"
738 fi
739 fi
740 fi
741
742 dnl -----------------------
743 dnl Set IPv6 related values
744 dnl -----------------------
745 LIBS="$LIB_IPV6 $LIBS"
746 AC_SUBST(LIB_IPV6)
747
748 if test x"$RIPNGD" = x""; then
749 AC_MSG_RESULT(IPv4 only)
750 fi
751 fi
752
753 dnl ------------------
754 dnl IPv6 header checks
755 dnl ------------------
756 if test "x${zebra_cv_ipv6}" = "xyes"; then
757 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
758 netinet6/in6_var.h netinet6/nd6.h])
759 fi
760
761 dnl --------------------
762 dnl Daemon disable check
763 dnl --------------------
764 if test "${enable_zebra}" = "no";then
765 ZEBRA=""
766 else
767 ZEBRA="zebra"
768 fi
769
770 if test "${enable_bgpd}" = "no";then
771 BGPD=""
772 else
773 BGPD="bgpd"
774 fi
775
776 if test "${enable_ripd}" = "no";then
777 RIPD=""
778 else
779 RIPD="ripd"
780 fi
781
782 if test "${enable_ospfd}" = "no";then
783 OSPFD=""
784 else
785 OSPFD="ospfd"
786 fi
787
788 if test "${enable_watchquagga}" = "no";then
789 WATCHQUAGGA=""
790 else
791 WATCHQUAGGA="watchquagga"
792 fi
793
794 OSPFCLIENT=""
795 if test "${enable_opaque_lsa}" = "yes"; then
796 if test "${enable_ospfapi}" != "no";then
797 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
798
799 if test "${enable_ospfclient}" != "no";then
800 OSPFCLIENT="ospfclient"
801 fi
802 fi
803
804 fi
805
806 case "${enable_ripngd}" in
807 "yes") RIPNGD="ripngd";;
808 "no" ) RIPNGD="";;
809 * ) ;;
810 esac
811
812 case "${enable_ospf6d}" in
813 "yes") OSPF6D="ospf6d";;
814 "no" ) OSPF6D="";;
815 * ) ;;
816 esac
817
818 case "${enable_isisd}" in
819 "yes") ISISD="isisd";;
820 "no" ) ISISD="";;
821 * ) ;;
822 esac
823
824 if test "${enable_bgp_announce}" = "no";then
825 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
826 fi
827
828 AC_SUBST(ZEBRA)
829 AC_SUBST(BGPD)
830 AC_SUBST(RIPD)
831 AC_SUBST(RIPNGD)
832 AC_SUBST(OSPFD)
833 AC_SUBST(OSPF6D)
834 AC_SUBST(WATCHQUAGGA)
835 AC_SUBST(ISISD)
836 AC_SUBST(VTYSH)
837 AC_SUBST(INCLUDES)
838 AC_SUBST(CURSES)
839 AC_SUBST(OSPFCLIENT)
840 AC_SUBST(OSPFAPI)
841 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
842 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
843 AC_CHECK_LIB(crypt, crypt)
844 AC_CHECK_LIB(resolv, res_init)
845 AC_CHECK_LIB(m, main)
846
847 dnl ---------------------------------------------------
848 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
849 dnl ---------------------------------------------------
850 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
851 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
852 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
853
854 dnl ---------------------------
855 dnl check system has GNU regexp
856 dnl ---------------------------
857 dnl AC_MSG_CHECKING(whether system has GNU regex)
858 AC_CHECK_LIB(c, regexec,
859 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
860 LIB_REGEX=""],
861 [LIB_REGEX="regex.o"])
862 AC_SUBST(LIB_REGEX)
863
864 dnl ------------------
865 dnl check SNMP library
866 dnl ------------------
867 if test "${enable_snmp}" = "yes";then
868 dnl AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
869 if test "${HAVE_SNMP}" = ""; then
870 old_libs="${LIBS}"
871 LIBS="-L/usr/lib"
872 unset ac_cv_lib_snmp_asn_parse_int
873 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
874 if test "${NEED_CRYPTO}" = ""; then
875 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes ])
876 else
877 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" ],,"-lcrypto")
878 fi
879 LIBS="${old_libs}"
880 fi
881 if test "${HAVE_SNMP}" = ""; then
882 old_libs="${LIBS}"
883 LIBS="-L/usr/lib"
884 unset ac_cv_lib_snmp_asn_parse_int
885 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes, )
886 if test "${HAVE_SNMP}" = ""; then
887 unset ac_cv_lib_snmp_asn_parse_int
888 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
889 if test "${NEED_CRYPTO}" = "yes"; then
890 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
891 fi
892 fi
893 LIBS="${old_libs}"
894 fi
895
896 if test "${HAVE_SNMP}" = ""; then
897 old_libs="${LIBS}"
898 LIBS="-L/usr/local/lib"
899 unset ac_cv_lib_snmp_asn_parse_int
900 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
901 if test "${HAVE_SNMP}" = ""; then
902 unset ac_cv_lib_snmp_asn_parse_int
903 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
904 if test "${NEED_CRYPTO}" = "yes"; then
905 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
906 fi
907 fi
908 LIBS="${old_libs}"
909 fi
910
911 if test "${HAVE_SNMP}" = "yes"; then
912 for ac_snmp in /usr/include/net-snmp/library/asn1.h /usr/include/ucd-snmp/asn1.h /usr/local/include/ucd-snmp/asn1.h /dev/null
913 do
914 test -f "${ac_snmp}" && break
915 done
916
917 case ${ac_snmp} in
918 /usr/include/net-snmp/*)
919 AC_DEFINE(HAVE_SNMP,,SNMP)
920 AC_DEFINE(HAVE_NETSNMP,,SNMP)
921 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
922 CFLAGS="${CFLAGS} -I/usr/include/net-snmp -I/usr/include/net-snmp/library"
923 if test "${HAVE_NETSNMP}" = "yes"; then
924 LIBS="${LIBS} -lnetsnmp"
925 else
926 LIBS="${LIBS} -lsnmp"
927 fi
928 ;;
929 /usr/include/ucd-snmp/*)
930 AC_DEFINE(HAVE_SNMP,,SNMP)
931 CFLAGS="${CFLAGS} -I/usr/include/ucd-snmp"
932 LIBS="${LIBS} -lsnmp"
933 ;;
934 /usr/local/include/ucd-snmp/*)
935 AC_DEFINE(HAVE_SNMP,,SNMP)
936 CFLAGS="${CFLAGS} -I/usr/local/include/ucd-snmp"
937 LIBS="${LIBS} -L/usr/local/lib -lsnmp"
938 ;;
939 /usr/local/include/net-snmp/*)
940 AC_DEFINE(HAVE_SNMP,,SNMP)
941 AC_DEFINE(HAVE_NET_SNMP,,SNMP)
942 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
943 CFLAGS="${CFLAGS} -I/usr/local/include/net-snmp"
944 LIBS="${LIBS} -L/usr/local/lib -lnetsnmp"
945 ;;
946 esac
947 if test "${NEED_CRYPTO}" = "yes"; then
948 LIBS="${LIBS} -lcrypto"
949 fi
950 fi
951 fi
952
953 dnl ----------------------------
954 dnl check sa_len of sockaddr
955 dnl ----------------------------
956 AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
957 AC_TRY_COMPILE([#include <sys/types.h>
958 #include <sys/socket.h>
959 ],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
960 [AC_MSG_RESULT(yes)
961 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
962 AC_MSG_RESULT(no))
963
964 dnl ----------------------------
965 dnl check sin_len of sockaddr_in
966 dnl ----------------------------
967 AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
968 AC_TRY_COMPILE([#include <sys/types.h>
969 #include <netinet/in.h>
970 ],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
971 [AC_MSG_RESULT(yes)
972 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
973 AC_MSG_RESULT(no))
974
975 dnl ----------------------------
976 dnl check sun_len of sockaddr_un
977 dnl ----------------------------
978 AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
979 AC_TRY_COMPILE([#include <sys/types.h>
980 #include <sys/un.h>
981 ],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
982 [AC_MSG_RESULT(yes)
983 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
984 AC_MSG_RESULT(no))
985
986 dnl -----------------------------------
987 dnl check sin6_scope_id of sockaddr_in6
988 dnl -----------------------------------
989 if test "$zebra_cv_ipv6" = yes; then
990 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
991 AC_TRY_COMPILE([#include <sys/types.h>
992 #include <netinet/in.h>
993 ],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
994 [AC_MSG_RESULT(yes)
995 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
996 AC_MSG_RESULT(no))
997 fi
998
999 dnl ----------------------------
1000 dnl check socklen_t exist or not
1001 dnl ----------------------------
1002 AC_MSG_CHECKING(whther socklen_t is defined)
1003 AC_TRY_COMPILE([#include <sys/types.h>
1004 #include <sys/socket.h>
1005 #include <netinet/in.h>
1006 ],[socklen_t ac_x;],
1007 [AC_MSG_RESULT(yes)
1008 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1009 AC_MSG_RESULT(no))
1010
1011 dnl ------------------------
1012 dnl check struct sockaddr_dl
1013 dnl ------------------------
1014 AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1015 AC_EGREP_HEADER(sockaddr_dl,
1016 net/if_dl.h,
1017 [AC_MSG_RESULT(yes)
1018 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1019 AC_MSG_RESULT(no))
1020
1021 dnl --------------------------
1022 dnl check structure ifaliasreq
1023 dnl --------------------------
1024 AC_MSG_CHECKING(whether struct ifaliasreq exist)
1025 AC_EGREP_HEADER(ifaliasreq,
1026 net/if.h,
1027 [AC_MSG_RESULT(yes)
1028 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1029 AC_MSG_RESULT(no))
1030
1031 dnl ----------------------------
1032 dnl check structure in6_aliasreq
1033 dnl ----------------------------
1034 AC_MSG_CHECKING(whether struct in6_aliasreq exist)
1035 AC_EGREP_HEADER(in6_aliasreq,
1036 netinet6/in6_var.h,
1037 [AC_MSG_RESULT(yes)
1038 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1039 AC_MSG_RESULT(no))
1040
1041 dnl -----------------------------------
1042 dnl check ifra_lifetime of in6_aliasreq
1043 dnl -----------------------------------
1044 AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1045 AC_TRY_COMPILE([#include <sys/types.h>
1046 #include <netinet6/in6_var.h>
1047 ],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1048 [AC_MSG_RESULT(yes)
1049 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
1050 AC_MSG_RESULT(no))
1051
1052 dnl ---------------------------
1053 dnl check structure rt_addrinfo
1054 dnl ---------------------------
1055 AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1056 AC_EGREP_HEADER(rt_addrinfo,
1057 net/route.h,
1058 [AC_MSG_RESULT(yes)
1059 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1060 AC_MSG_RESULT(no))
1061
1062 dnl --------------------------
1063 dnl check structure in_pktinfo
1064 dnl --------------------------
1065 AC_MSG_CHECKING(whether struct in_pktinfo exist)
1066 AC_TRY_COMPILE([#include <netinet/in.h>
1067 ],[struct in_pktinfo ac_x;],
1068 [AC_MSG_RESULT(yes)
1069 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1070 AC_MSG_RESULT(no))
1071
1072 dnl --------------------------------------
1073 dnl checking for getrusage struct and call
1074 dnl --------------------------------------
1075 AC_MSG_CHECKING(whether getrusage is available)
1076 AC_TRY_COMPILE([#include <sys/resource.h>
1077 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1078 [AC_MSG_RESULT(yes)
1079 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1080 AC_MSG_RESULT(no))
1081
1082 dnl -------------------
1083 dnl capabilities checks
1084 dnl -------------------
1085 if test "${enable_capabilities}" != "no"; then
1086 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1087 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1088 [AC_MSG_RESULT(yes)
1089 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1090 quagga_ac_keepcaps="yes"],
1091 AC_MSG_RESULT(no)
1092 )
1093 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1094 AC_CHECK_HEADERS(sys/capability.h)
1095 fi
1096 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1097 AC_CHECK_LIB(cap, cap_init,
1098 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1099 LIBCAP="-lcap"
1100 ]
1101 )
1102 fi
1103 fi
1104 AC_SUBST(LIBCAP)
1105
1106 dnl ---------------------------
1107 dnl check for glibc 'backtrace'
1108 dnl ---------------------------
1109 if test "${glibc}" = "yes"; then
1110 AC_CHECK_HEADER(execinfo.h)
1111 fi
1112 if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1113 AC_CHECK_FUNC(backtrace,
1114 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1115 )
1116 fi
1117
1118 dnl ----------
1119 dnl configure date
1120 dnl ----------
1121 CONFDATE=`date '+%Y%m%d'`
1122 AC_SUBST(CONFDATE)
1123
1124 dnl ------------------------------
1125 dnl set paths for state directory
1126 dnl ------------------------------
1127 if test "${prefix}" = "NONE"; then
1128 quagga_statedir_prefix="";
1129 else
1130 quagga_statedir_prefix=${prefix}
1131 fi
1132 if test "${localstatedir}" = '${prefix}/var'; then
1133 AC_CACHE_CHECK(state directory,ac_statedir,
1134 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1135 ${quagga_statedir_prefix}/var/adm dnl
1136 ${quagga_statedir_prefix}/etc dnl
1137 /var/run dnl
1138 /var/adm dnl
1139 /etc dnl
1140 /dev/null;
1141 do
1142 test -d $QUAGGA_STATE_DIR && break
1143 done
1144 quagga_statedir=$QUAGGA_STATE_DIR])
1145 else
1146 quagga_statedir=${localstatedir}
1147 AC_MSG_CHECKING(directory to use for state file)
1148 AC_MSG_RESULT(${quagga_statedir})
1149 fi
1150 if test $quagga_statedir = "/dev/null"; then
1151 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1152 fi
1153
1154 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1155 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1156 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1157 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1158 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1159 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1160 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1161 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1162 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1163 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1164 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1165 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1166 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1167 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1168 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1169 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1170 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1171
1172 dnl ---------------------------
1173 dnl Check htonl works correctly
1174 dnl ---------------------------
1175 AC_MSG_CHECKING(for working htonl)
1176 AC_CACHE_VAL(ac_cv_htonl_works, [
1177 AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1178 #include <sys/types.h>
1179 #endif
1180 #ifdef HAVE_NETDB_H
1181 #include <netdb.h>
1182 #endif
1183 #ifdef HAVE_NETINET_IN_H
1184 #include <netinet/in.h>
1185 #endif],
1186 [htonl (0);],
1187 ac_cv_htonl_works=yes,
1188 ac_cv_htonl_works=no)])
1189 AC_MSG_RESULT($ac_cv_htonl_works)
1190
1191 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1192 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1193 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1194 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1195 pkgsrc/Makefile
1196 redhat/quagga.spec
1197 lib/version.h
1198 doc/defines.texi
1199 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1200 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1201 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1202 ## Hack, but working solution to avoid rebuilding of quagga.info.
1203 ## It's already in CVS until texinfo 4.7 is more common.
1204 AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
1205 AC_OUTPUT
1206
1207 echo "
1208 Quagga configuration
1209 --------------------
1210 quagga version : ${PACKAGE_VERSION}
1211 host operationg system : ${host_os}
1212 source code location : ${srcdir}
1213 compiler : ${CC}
1214 compiler flags : ${CFLAGS}
1215 linker flags : ${LDFLAGS} ${LIBS}
1216 state file directory : ${quagga_statedir}
1217 config file directory : `eval echo \`echo ${sysconfdir}\``
1218 example directory : `eval echo \`echo ${exampledir}\``
1219 user to run as : ${enable_user}
1220 group to run as : ${enable_group}
1221 group for vty sockets : ${enable_vty_group}
1222 config file mask : ${enable_configfile_mask}
1223 log file mask : ${enable_logfile_mask}
1224
1225 The above user and group must have read/write access to the state file
1226 directory and to the config files in the config file directory.
1227 "