blob: 79b191f52dccaa90a27ea643f8c3311e875ff139 [file] [log] [blame]
paul7ea487b2003-03-17 02:05:07 +00001##
paule8f29842003-08-12 13:08:31 +00002## Configure template file for Quagga.
paul7ea487b2003-03-17 02:05:07 +00003## autoconf will generate configure script.
4##
5## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
paule8f29842003-08-12 13:08:31 +00006## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
paul7ea487b2003-03-17 02:05:07 +00007##
Paul Jakma08f9fb12006-05-10 19:52:36 +00008## $Id: configure.ac,v 1.120 2006/05/10 19:52:36 paul Exp $
paule8f29842003-08-12 13:08:31 +00009AC_PREREQ(2.53)
paul7ea487b2003-03-17 02:05:07 +000010
Paul Jakma08f9fb12006-05-10 19:52:36 +000011AC_INIT(Quagga, 0.99.4, [http://bugzilla.quagga.net])
paulfa1253d2003-09-24 05:09:26 +000012AC_CONFIG_SRCDIR(lib/zebra.h)
ajsdfb9a542005-04-11 14:55:55 +000013
14dnl -----------------------------------
15dnl Get hostname and other information.
16dnl -----------------------------------
17AC_CANONICAL_BUILD()
18AC_CANONICAL_HOST()
19AC_CANONICAL_TARGET()
20
gdt81b81822004-04-07 22:48:47 +000021AM_INIT_AUTOMAKE(1.6)
paul7ea487b2003-03-17 02:05:07 +000022AM_CONFIG_HEADER(config.h)
23
paul03ecfb62005-04-16 15:38:23 +000024dnl we need gawk for memtypes.awk
25AC_CHECK_PROG([GAWK],[gawk],[gawk],[/bin/false])
26AC_ARG_VAR([GAWK],[GNU AWK])
27
gdtd6b72f72003-12-03 17:24:27 +000028dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000029exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000030AC_ARG_ENABLE([exampledir],
31 AC_HELP_STRING([--enable-exampledir],
32 [specify alternate directory for examples]),
33 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000034dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000035AC_SUBST(exampledir)
36
gdtcbd04082004-08-31 18:16:36 +000037dnl default is to match previous behavior
38pkgsrcrcdir=""
39pkgsrcdir=""
40AC_ARG_ENABLE([pkgsrcrcdir],
41 AC_HELP_STRING([--enable-pkgsrcrcdir],
42 [specify directory for rc.d scripts]),
43 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
44dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
45AC_SUBST(pkgsrcdir)
46AC_SUBST(pkgsrcrcdir)
47
paul7ea487b2003-03-17 02:05:07 +000048dnl ------------
49dnl Check CFLAGS
50dnl ------------
51AC_ARG_WITH(cflags,
52[ --with-cflags Set CFLAGS for use in compilation.])
53if test "x$with_cflags" != "x" ; then
54 CFLAGS="$with_cflags" ; cflags_specified=yes ;
55elif test -n "$CFLAGS" ; then
56 cflags_specified=yes ;
57fi
58
hasso1969e4b2005-03-27 13:07:23 +000059dnl --------------------
60dnl Check CC and friends
61dnl --------------------
paul7ea487b2003-03-17 02:05:07 +000062AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000063AC_PROG_CPP
64AC_PROG_EGREP
65
66dnl ------------------------------------------------------------------
67dnl Intel compiler check. Although Intel tries really hard to make icc
68dnl look like gcc, there are some differences. It's very verbose with
69dnl -Wall and it doesn't support the individual -W options.
70dnl ------------------------------------------------------------------
paul6a4b8832005-11-26 08:28:00 +000071if test "x${GCC}" = "xyes" ; then
72 COMPILER="GCC"
73 AC_MSG_CHECKING([whether we are using the Intel compiler])
74 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
75 [AC_MSG_RESULT([no])],
76 [COMPILER="ICC"
77 AC_MSG_RESULT([yes])]
78 )
79else
80 AC_MSG_CHECKING([whether we are using SunPro compiler])
81 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
82 [AC_MSG_RESULT([no])],
83 [COMPILER="SUNPRO"
84 AC_MSG_RESULT([yes])]
85 )
86fi
paul7ea487b2003-03-17 02:05:07 +000087
paula49c0ff2004-09-30 06:08:58 +000088dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000089dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +000090dnl AC_PROG_CC will have set minimal default
91dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +000092dnl (Wall is gcc specific... have to make sure
93dnl gcc is being used before setting it)
94dnl
paul6a4b8832005-11-26 08:28:00 +000095dnl Intel icc 8.0 also sets __GNUC__,
96dnl but doesn't support all these fancy -W options.
hasso1969e4b2005-03-27 13:07:23 +000097dnl Intel compiler warnings we ignore:
98dnl 279: controlling expression is constant.
99dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
100dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
101dnl macro.
102dnl 981: operands are evaluated in unspecified order.
paul6a4b8832005-11-26 08:28:00 +0000103dnl
104dnl Sun Studio 10 / SunPro 5.7 is also supported,
105dnl so lets set some sane CFLAGS for it.
106dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000107
paul6a4b8832005-11-26 08:28:00 +0000108AC_MSG_CHECKING([whether to set a default CFLAGS])
109if test "x${cflags_specified}" = "x" ; then
110 case ${COMPILER} in
111 "ICC")
112 CFLAGS="-Os -g -Wall -wd 279,869,981"
113 AC_MSG_RESULT([Intel default])
114 ;;
115 "GCC")
116 CFLAGS="-Os -fno-omit-frame-pointer -g -std=c99 -Wall"
117 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
118 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
119 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
120 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
121 # TODO: conditionally addd -Wpacked if handled
122 AC_MSG_RESULT([gcc default])
123 ;;
124 "SUNPRO")
125 CFLAGS="-xO4 -xspace -xcode=pic32 -xstrconst -Xt -xc99"
126 AC_MSG_RESULT([SunPro default])
127 ;;
128 *)
129 AC_MSG_RESULT([unknown compiler])
130 ;;
131 esac
132else
133 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000134fi
135
paul7ea487b2003-03-17 02:05:07 +0000136dnl --------------
137dnl Check programs
138dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000139AC_PROG_INSTALL
140AC_PROG_MAKE_SET
141AC_CHECK_TOOL(AR, ar)
142AC_CHECK_TOOL(RANLIB, ranlib, :)
143
144dnl ---------
145dnl AIX check
146dnl ---------
147AC_AIX
148
gdt87efd642004-06-30 17:36:11 +0000149dnl -------
150dnl libtool
151dnl -------
paul0fc42942004-08-19 04:41:21 +0000152AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000153
paul7ea487b2003-03-17 02:05:07 +0000154dnl ----------------------
155dnl Packages configuration
156dnl ----------------------
157AC_ARG_ENABLE(vtysh,
gdtfc9d0742004-06-30 14:25:12 +0000158[ --enable-vtysh include integrated vty shell for Quagga])
paul7ea487b2003-03-17 02:05:07 +0000159AC_ARG_ENABLE(ipv6,
160[ --disable-ipv6 turn off IPv6 related features and daemons])
161AC_ARG_ENABLE(zebra,
162[ --disable-zebra do not build zebra daemon])
163AC_ARG_ENABLE(bgpd,
164[ --disable-bgpd do not build bgpd])
165AC_ARG_ENABLE(ripd,
166[ --disable-ripd do not build ripd])
167AC_ARG_ENABLE(ripngd,
168[ --disable-ripngd do not build ripngd])
169AC_ARG_ENABLE(ospfd,
170[ --disable-ospfd do not build ospfd])
paul7ea487b2003-03-17 02:05:07 +0000171AC_ARG_ENABLE(ospf6d,
172[ --disable-ospf6d do not build ospf6d])
ajsd0199432004-12-22 14:03:52 +0000173AC_ARG_ENABLE(watchquagga,
174[ --disable-watchquagga do not build watchquagga])
jardin9e867fe2003-12-23 08:56:18 +0000175AC_ARG_ENABLE(isisd,
hassoae399ab2004-09-13 20:22:18 +0000176[ --enable-isisd build isisd])
paul7ea487b2003-03-17 02:05:07 +0000177AC_ARG_ENABLE(bgp-announce,
178[ --disable-bgp-announce, turn off BGP route announcement])
179AC_ARG_ENABLE(netlink,
180[ --enable-netlink force to use Linux netlink interface])
181AC_ARG_ENABLE(broken-aliases,
182[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
183AC_ARG_ENABLE(snmp,
184[ --enable-snmp enable SNMP support])
185AC_ARG_WITH(libpam,
186[ --with-libpam use libpam for PAM support in vtysh])
hasso71c0fb52003-05-25 20:18:13 +0000187AC_ARG_ENABLE(tcp-zebra,
paul7ea487b2003-03-17 02:05:07 +0000188[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
paul7ea487b2003-03-17 02:05:07 +0000189AC_ARG_ENABLE(opaque-lsa,
paul1ef74ef2003-03-21 15:16:05 +0000190[ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
191AC_ARG_ENABLE(ospfapi,
192[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
193 (this is the default if --enable-opaque-lsa is not set)])
194AC_ARG_ENABLE(ospfclient,
195[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
196 (this is the default if --disable-ospfapi is set)])
paul7ea487b2003-03-17 02:05:07 +0000197AC_ARG_ENABLE(ospf-te,
198[ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
199AC_ARG_ENABLE(multipath,
200[ --enable-multipath=ARG enable multipath function, ARG must be digit])
paule8f29842003-08-12 13:08:31 +0000201AC_ARG_ENABLE(quagga_user,
202[ --enable-user=ARG user to run Quagga suite as (default quagga)])
203AC_ARG_ENABLE(quagga_group,
204[ --enable-group=ARG group to run Quagga suite as (default quagga)])
pauledd7c242003-06-04 13:59:38 +0000205AC_ARG_ENABLE(vty_group,
paul6b6942f2004-10-22 04:55:05 +0000206[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
gdtaa593d52003-12-22 20:15:53 +0000207AC_ARG_ENABLE(configfile_mask,
208[ --enable-configfile-mask=ARG set mask for config files])
209AC_ARG_ENABLE(logfile_mask,
210[ --enable-logfile-mask=ARG set mask for log files])
pauledd7c242003-06-04 13:59:38 +0000211
hasso71c0fb52003-05-25 20:18:13 +0000212AC_ARG_ENABLE(rtadv,
paul6b6942f2004-10-22 04:55:05 +0000213[ --disable-rtadv disable IPV6 router advertisement feature])
hassoca776982004-06-12 14:33:05 +0000214AC_ARG_ENABLE(irdp,
paul6b6942f2004-10-22 04:55:05 +0000215[ --enable-irdp enable IRDP server support in zebra])
hassof695b012005-04-02 19:03:39 +0000216AC_ARG_ENABLE(isis_topology,
217[ --enable-isis-topology enable IS-IS topology generator])
hasso41d3fc92004-04-06 11:59:00 +0000218AC_ARG_ENABLE(capabilities,
219[ --disable-capabilities disable using POSIX capabilities])
paul6b6942f2004-10-22 04:55:05 +0000220AC_ARG_ENABLE(gcc_ultra_verbose,
221[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
ajs3cade262004-12-29 17:50:22 +0000222AC_ARG_ENABLE(gcc-rdynamic,
223[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
ajs924b9222005-04-16 17:11:24 +0000224AC_ARG_ENABLE(time-check,
225[ --disable-time-check disable slow thread warning messages])
paul6b6942f2004-10-22 04:55:05 +0000226
227if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
228 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
229 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
230 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
231 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
232fi
paul7ea487b2003-03-17 02:05:07 +0000233
ajs3cade262004-12-29 17:50:22 +0000234if test x"${enable_gcc_rdynamic}" = x"yes" ; then
235 LDFLAGS="${LDFLAGS} -rdynamic"
236fi
237
ajs924b9222005-04-16 17:11:24 +0000238if test x"${enable_time_check}" != x"no" ; then
239 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
240 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
241 else
242 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
243 fi
244fi
245
paul7ea487b2003-03-17 02:05:07 +0000246if test "${enable_broken_aliases}" = "yes"; then
247 if test "${enable_netlink}" = "yes"
248 then
249 echo "Sorry, you can't use netlink with broken aliases"
250 exit 1
251 fi
252 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
253 enable_netlink=no
254fi
255
256if test "${enable_tcp_zebra}" = "yes"; then
257 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
258fi
259
paul7ea487b2003-03-17 02:05:07 +0000260if test "${enable_opaque_lsa}" = "yes"; then
261 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
262fi
263
264if test "${enable_ospf_te}" = "yes"; then
265 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
266 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
267fi
268
gdtd2a0ccc2003-12-03 18:13:48 +0000269AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
270if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000271 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000272 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000273else
274 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000275fi
paul7ea487b2003-03-17 02:05:07 +0000276
hassoca776982004-06-12 14:33:05 +0000277if test "${enable_irdp}" = "yes"; then
278 AC_DEFINE(HAVE_IRDP,, IRDP )
279fi
280
hassof695b012005-04-02 19:03:39 +0000281if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
282 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
283 ISIS_TOPOLOGY_INCLUDES="-I./topology"
284 ISIS_TOPOLOGY_DIR="topology"
285 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
286fi
287
288AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
289AC_SUBST(ISIS_TOPOLOGY_DIR)
290AC_SUBST(ISIS_TOPOLOGY_LIB)
291
paul79cb2162003-06-06 12:19:53 +0000292if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000293 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000294elif test "${enable_user}" = "no"; then
295 enable_user="root"
296fi
pauledd7c242003-06-04 13:59:38 +0000297
paul79cb2162003-06-06 12:19:53 +0000298if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000299 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000300elif test "${enable_group}" = "no"; then
301 enable_group="root"
302fi
pauledd7c242003-06-04 13:59:38 +0000303
304if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000305 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000306elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000307 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000308 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
309 fi
310fi
paul26275b02005-04-11 07:10:47 +0000311AC_SUBST([enable_user])
312AC_SUBST([enable_group])
313AC_SUBST([enable_vty_group])
314AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
315AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000316
gdtaa593d52003-12-22 20:15:53 +0000317enable_configfile_mask=${enable_configfile_mask:-0600}
318AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
319
320enable_logfile_mask=${enable_logfile_mask:-0600}
321AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
322
paul7ea487b2003-03-17 02:05:07 +0000323changequote(, )dnl
324
325MULTIPATH_NUM=1
326
327case "${enable_multipath}" in
328 [0-9]|[1-9][0-9])
329 MULTIPATH_NUM="${enable_multipath}"
330 ;;
331 "")
332 ;;
333 *)
334 echo "Please specify digit to --enable-multipath ARG."
335 exit 1
336 ;;
337esac
338
339changequote([, ])dnl
340
341AC_SUBST(MULTIPATH_NUM)
342
343dnl -------------------
344dnl Check header files.
345dnl -------------------
pauldc7a2bf2003-10-22 00:07:44 +0000346AC_HEADER_STDC
347AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
348 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
349 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
paul76367ea2005-11-14 14:05:35 +0000350 sys/param.h libutil.h limits.h stdint.h])
pauldc7a2bf2003-10-22 00:07:44 +0000351
paul835b7f12003-10-30 21:59:57 +0000352AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
paulf3bd1a72003-11-02 07:29:11 +0000353 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
paul835b7f12003-10-30 21:59:57 +0000354 net/if.h net/if_var.h netinet/in_var.h])
pauldc7a2bf2003-10-22 00:07:44 +0000355
gdtfa3232e2003-12-03 17:52:30 +0000356dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000357
358dnl check some types
359AC_C_CONST
360dnl AC_TYPE_PID_T
361AC_TYPE_SIGNAL
362
363dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
364case "$host" in
paulafd8a122005-03-12 06:36:10 +0000365 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000366 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000367 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000368 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000369 AC_CHECK_LIB(xnet, main)
370 CURSES=-lcurses
371 ;;
paul1b73de82005-04-10 16:31:51 +0000372 [*-sunos5.[8-9]] \
373 | [*-sunos5.1[0-9]] \
374 | [*-sunos5.1[0-9].[0-9]] \
375 | [*-solaris2.[8-9]] \
376 | [*-solaris2.1[0-9]] \
377 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000378 opsys=sol8
379 AC_DEFINE(SUNOS_59,,SunOS 5.8 up)
paul19877dd2004-05-11 10:49:35 +0000380 AC_DEFINE(SUNOS_5, 1, SunOS 5)
381 AC_CHECK_LIB(socket, main)
382 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000383 AC_CHECK_LIB(umem, main)
paul19877dd2004-05-11 10:49:35 +0000384 CURSES=-lcurses
385 ;;
paul7ea487b2003-03-17 02:05:07 +0000386 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000387 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000388 AC_CHECK_LIB(socket, main)
389 AC_CHECK_LIB(nsl, main)
390 CURSES=-lcurses
391 ;;
hassoc45eb832005-02-19 13:58:06 +0000392 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000393 opsys=gnu-linux
394 AC_DEFINE(GNU_LINUX,,GNU Linux)
395 ;;
396 *-nec-sysv4*)
397 AC_CHECK_LIB(nsl, gethostbyname)
398 AC_CHECK_LIB(socket, socket)
399 ;;
paul7ea487b2003-03-17 02:05:07 +0000400 *-openbsd*)
401 opsys=openbsd
402 AC_DEFINE(OPEN_BSD,,OpenBSD)
403 ;;
404 *-bsdi*)
405 opsys=bsdi
406 OTHER_METHOD="mtu_kvm.o"
407 AC_CHECK_LIB(kvm, main)
408 ;;
paul49e3b3c2003-10-23 20:39:50 +0000409 *-irix6.5)
pauldc7a2bf2003-10-22 00:07:44 +0000410 opsys=irix
411 AC_DEFINE(IRIX_65,,IRIX 6.5)
412 ;;
paul7ea487b2003-03-17 02:05:07 +0000413esac
414
415dnl ---------------------
416dnl Integrated VTY option
417dnl ---------------------
418case "${enable_vtysh}" in
419 "yes") VTYSH="vtysh";
420 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000421 AC_PATH_PROG(PERL, perl)
422dnl Vtysh uses libreadline, which looks for termcap functions at
423dnl configure time. We follow readline's search order.
424dnl The required procedures are in libtermcap on NetBSD, in
425dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000426 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000427 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
428 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
429 [AC_CHECK_LIB(ncurses, tputs,
430 LIBREADLINE="$LIBREADLINE -lncurses")]
431 )]
432 )]
433 )
434 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
435 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000436 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000437 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000438 fi
439 AC_CHECK_HEADER(readline/history.h)
440 if test $ac_cv_header_readline_history_h = no;then
441 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
442 fi
paula9694592005-08-25 14:50:05 +0000443 AC_CHECK_LIB(readline, rl_completion_matches,
444 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000445 if test $ac_cv_lib_readline_rl_completion_matches = no; then
446 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
447 fi
448 ;;
paul7ea487b2003-03-17 02:05:07 +0000449 "no" ) VTYSH="";;
450 * ) ;;
451esac
hassoc0689392005-08-25 12:00:58 +0000452AC_SUBST(LIBREADLINE)
paul7ea487b2003-03-17 02:05:07 +0000453
454dnl ----------
455dnl PAM module
456dnl ----------
457if test "$with_libpam" = "yes"; then
paul24cd4352003-05-06 12:16:27 +0000458 AC_CHECK_HEADER(security/pam_misc.h)
459 if test "$ac_cv_header_security_pam_misc_h" = yes; then
460 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
461 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
462 pam_conv_func="misc_conv"
paul24cd4352003-05-06 12:16:27 +0000463 fi
paul24cd4352003-05-06 12:16:27 +0000464 AC_CHECK_HEADER(security/openpam.h)
465 if test "$ac_cv_header_security_openpam_h" = yes; then
466 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
467 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
468 pam_conv_func="openpam_ttyconv"
paul24cd4352003-05-06 12:16:27 +0000469 fi
470 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
471 AC_MSG_WARN([*** pam support will not be built ***])
472 with_libpam="no"
473 fi
474fi
475
476if test "$with_libpam" = "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000477dnl took this test from proftpd's configure.in and suited to our needs
478dnl -------------------------------------------------------------------------
479dnl
480dnl This next check looks funky due to a linker problem with some versions
481dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
482dnl omitted requiring libdl linking information. PAM-0.72 or better ships
483dnl with RedHat 6.2 and Debian 2.2 or better.
484AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000485 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000486 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
487 LIBPAM="-lpam"],
488 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
489 LIBPAM="-lpam -lpam_misc"]
490 )
491 ],
492
493 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000494 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000495 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000496 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000497 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000498 LIBPAM="-lpam -ldl -lpam_misc"]
499 )
500 ],AC_MSG_WARN([*** pam support will not be built ***]),
501 [-ldl])
502 ]
503)
504fi
505AC_SUBST(LIBPAM)
506
507dnl -------------------------------
508dnl Endian-ness check
509dnl -------------------------------
510AC_WORDS_BIGENDIAN
511
512dnl -------------------------------
513dnl check the size in byte of the C
514dnl -------------------------------
515dnl AC_CHECK_SIZEOF(char)
516dnl AC_CHECK_SIZEOF(int)
517dnl AC_CHECK_SIZEOF(short)
518dnl AC_CHECK_SIZEOF(long)
519
520dnl ----------------------------
521dnl check existance of functions
522dnl ----------------------------
paul49e3b3c2003-10-23 20:39:50 +0000523AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
paul04bd4842003-10-24 04:24:39 +0000524 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
hassoe6a4feb2005-09-19 09:53:21 +0000525 fcntl strnlen strndup)
paula159ed92003-06-04 11:01:45 +0000526AC_CHECK_FUNCS(setproctitle, ,
527 [AC_CHECK_LIB(util, setproctitle,
528 [LIBS="$LIBS -lutil"
529 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
530 ]
531 )
532 ]
533)
paul7ea487b2003-03-17 02:05:07 +0000534
535dnl ------------------------------------
536dnl Determine routing get and set method
537dnl ------------------------------------
538AC_MSG_CHECKING(zebra between kernel interface method)
539if test x"$opsys" = x"gnu-linux"; then
540 if test "${enable_netlink}" = "yes";then
541 AC_MSG_RESULT(netlink)
542 RT_METHOD=rt_netlink.o
543 AC_DEFINE(HAVE_NETLINK,,netlink)
544 netlink=yes
545 elif test "${enable_netlink}" = "no"; then
546 AC_MSG_RESULT(ioctl)
547 RT_METHOD=rt_ioctl.o
548 netlink=no
549 else
550 AC_MSG_RESULT(netlink)
551 RT_METHOD=rt_netlink.o
552 AC_DEFINE(HAVE_NETLINK,,netlink)
553 netlink=yes
554 fi
paul19877dd2004-05-11 10:49:35 +0000555elif test x"$opsys" = x"sol2-6";then
556 AC_MSG_RESULT(Route socket)
557 KERNEL_METHOD="kernel_socket.o"
558 RT_METHOD="rt_socket.o"
paulafd8a122005-03-12 06:36:10 +0000559elif test x"$opsys" = x"sol8";then
paul19877dd2004-05-11 10:49:35 +0000560 AC_MSG_RESULT(Route socket)
561 KERNEL_METHOD="kernel_socket.o"
562 RT_METHOD="rt_socket.o"
563elif test "$opsys" = "irix" ; then
564 AC_MSG_RESULT(Route socket)
565 KERNEL_METHOD="kernel_socket.o"
566 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000567else
paul19877dd2004-05-11 10:49:35 +0000568 AC_TRY_RUN([#include <errno.h>
paul7ea487b2003-03-17 02:05:07 +0000569#include <sys/types.h>
570#include <sys/socket.h>
571
572main ()
573{
574 int ac_sock;
575
576 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
577 if (ac_sock < 0 && errno == EINVAL)
578 exit (1);
579 exit (0);
580}],
581 [KERNEL_METHOD=kernel_socket.o
582 RT_METHOD=rt_socket.o
583 AC_MSG_RESULT(socket)],
584 [RT_METHOD=rt_ioctl.o
585 AC_MSG_RESULT(ioctl)],
586 [KERNEL_METHOD=kernel_socket.o
587 RT_METHOD=rt_socket.o
588 AC_MSG_RESULT(socket)])
paul7ea487b2003-03-17 02:05:07 +0000589fi
590AC_SUBST(RT_METHOD)
591AC_SUBST(KERNEL_METHOD)
592AC_SUBST(OTHER_METHOD)
593
ajsb99760a2005-01-04 16:24:43 +0000594dnl ------------------------------------
595dnl check for broken CMSG_FIRSTHDR macro
596dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000597AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000598AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000599#ifdef SUNOS_5
600#define _XPG4_2
601#define __EXTENSIONS__
602#endif
603#include <stdlib.h>
604#include <sys/types.h>
605#include <sys/socket.h>
606
607main()
608{
609 struct msghdr msg;
610 char buf[4];
611
612 msg.msg_control = buf;
613 msg.msg_controllen = 0;
614
615 if (CMSG_FIRSTHDR(&msg) != NULL)
616 exit(0);
617 exit (1);
hasso5b087522005-04-03 23:46:37 +0000618}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000619[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000620
paul7ea487b2003-03-17 02:05:07 +0000621dnl ------------------------------
622dnl check kernel route read method
623dnl ------------------------------
624AC_CACHE_CHECK(route read method check, zebra_rtread,
625[if test "$netlink" = yes; then
626 RTREAD_METHOD="rtread_netlink.o"
627 zebra_rtread="netlink"
628else
629for zebra_rtread in /proc/net/route /dev/ip /dev/null;
630do
631 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
632done
633case $zebra_rtread in
634 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
635 zebra_rtread="proc";;
paul9c30ab62003-07-08 08:36:17 +0000636 "/dev/ip")
637 case "$host" in
638 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
639 zebra_rtread="sysctl";;
640 *) RTREAD_METHOD="rtread_getmsg.o"
641 zebra_rtread="getmsg";;
642 esac;;
paul7ea487b2003-03-17 02:05:07 +0000643 *) RTREAD_METHOD="rtread_sysctl.o"
644 zebra_rtread="sysctl";;
645esac
646fi])
647AC_SUBST(RTREAD_METHOD)
648
649dnl -----------------------------
650dnl check interface lookup method
651dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000652IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000653AC_MSG_CHECKING(interface looking up method)
654if test "$netlink" = yes; then
655 AC_MSG_RESULT(netlink)
656 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000657elif test "$opsys" = "sol2-6";then
658 AC_MSG_RESULT(Solaris GIF)
659 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000660elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000661 AC_MSG_RESULT(Solaris GLIF)
662 IF_METHOD=if_ioctl_solaris.o
663 IOCTL_METHOD=ioctl_solaris.o
664elif test "$opsys" = "irix" ; then
665 AC_MSG_RESULT(IRIX)
666 IF_METHOD=if_ioctl.o
667elif test "$opsys" = "openbsd";then
668 AC_MSG_RESULT(openbsd)
669 IF_METHOD=if_ioctl.o
670elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
671 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000672 IF_METHOD=if_sysctl.o
673 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000674else
paul7ea487b2003-03-17 02:05:07 +0000675 AC_MSG_RESULT(ioctl)
676 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000677fi
678AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000679AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000680
paul42c98192005-05-07 02:22:51 +0000681dnl ---------------------------------------------------------------
682dnl figure out how to specify an interface in multicast sockets API
683dnl ---------------------------------------------------------------
684AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
685#include <sys/types.h>
686#endif
687#ifdef HAVE_NETINET_IN_H
688#include <netinet/in.h>
689#endif])
690
691AC_MSG_CHECKING([for BSD struct ip_mreq hack])
692AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
693#include <sys/param.h>
694#endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
695 return (0);
696#else
697 #error No support for BSD struct ip_mreq hack detected
698#endif],[AC_MSG_RESULT(yes)
699AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
700AC_MSG_RESULT(no))
701
paul7ea487b2003-03-17 02:05:07 +0000702dnl -----------------------
703dnl check proc file system.
704dnl -----------------------
705if test -r /proc/net/dev; then
706 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
707 IF_PROC=if_proc.o
708fi
709
710if test -r /proc/net/if_inet6; then
711 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
712 IF_PROC=if_proc.o
713fi
714AC_SUBST(IF_PROC)
715
716dnl -----------------------------
717dnl check ipforward detect method
718dnl -----------------------------
719AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
720[for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
721do
722 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
723done
724case $zebra_ipforward_path in
725 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
726 zebra_ipforward_path="proc";;
727 "/dev/ip")
728 case "$host" in
729 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
730 zebra_ipforward_path="ews";;
paul9c30ab62003-07-08 08:36:17 +0000731 *-freebsd*) IPFORWARD=ipforward_sysctl.o
732 zebra_ipforward_path="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000733 *) IPFORWARD=ipforward_solaris.o
734 zebra_ipforward_path="solaris";;
735 esac;;
736 *) IPFORWARD=ipforward_sysctl.o
737 zebra_ipforward_path="sysctl";;
738esac])
739AC_SUBST(IPFORWARD)
740
741AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
742
743dnl ----------
744dnl IPv6 check
745dnl ----------
746AC_MSG_CHECKING(whether does this OS have IPv6 stack)
747if test "${enable_ipv6}" = "no"; then
748 AC_MSG_RESULT(disabled)
749else
750dnl ----------
751dnl INRIA IPv6
752dnl ----------
paula159ed92003-06-04 11:01:45 +0000753 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
754 zebra_cv_ipv6=yes
755 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
756 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
757 RIPNGD="ripngd"
758 OSPF6D="ospf6d"
759 LIB_IPV6=""
760 AC_MSG_RESULT(INRIA IPv6)
paul7ea487b2003-03-17 02:05:07 +0000761dnl ---------
762dnl KAME IPv6
763dnl ---------
paula159ed92003-06-04 11:01:45 +0000764 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
765 zebra_cv_ipv6=yes
766 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
767 AC_DEFINE(KAME,1,KAME IPv6)
768 RIPNGD="ripngd"
769 OSPF6D="ospf6d"
770 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
paul7ea487b2003-03-17 02:05:07 +0000771 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000772 fi
773 AC_MSG_RESULT(KAME)
hasso71c0fb52003-05-25 20:18:13 +0000774dnl -------------------------
775dnl MUSICA IPv6
776dnl default host check
777dnl It is not used by Kheops
778dnl -------------------------
paula159ed92003-06-04 11:01:45 +0000779 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
780 zebra_cv_ipv6=yes
781 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
782 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
783 AC_DEFINE(KAME,1,KAME IPv6 stack)
784 RIPNGD="ripngd"
785 OSPF6D="ospf6d"
786 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
hasso71c0fb52003-05-25 20:18:13 +0000787 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000788 fi
789 AC_MSG_RESULT(MUSICA)
paul7ea487b2003-03-17 02:05:07 +0000790dnl ---------
791dnl NRL check
792dnl ---------
paula159ed92003-06-04 11:01:45 +0000793 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
794 zebra_cv_ipv6=yes
795 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
796 AC_DEFINE(NRL,1,NRL)
797 RIPNGD="ripngd"
798 OSPF6D="ospf6d"
799 if test x"$opsys" = x"bsdi";then
paul7ea487b2003-03-17 02:05:07 +0000800 AC_DEFINE(BSDI_NRL,,BSDI)
801 AC_MSG_RESULT(BSDI_NRL)
paula159ed92003-06-04 11:01:45 +0000802 else
paul7ea487b2003-03-17 02:05:07 +0000803 AC_MSG_RESULT(NRL)
paula159ed92003-06-04 11:01:45 +0000804 fi
paul19877dd2004-05-11 10:49:35 +0000805dnl ------------------------------------
806dnl Solaris 9, 10 and potentially higher
807dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +0000808 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +0000809 zebra_cv_ipv6=yes;
810 AC_DEFINE(HAVE_IPV6, 1, IPv6)
811 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
812 RIPNGD="ripngd"
813 OSPF6D="ospf6d"
814 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +0000815dnl ----------
816dnl Linux IPv6
817dnl ----------
paula159ed92003-06-04 11:01:45 +0000818 elif test "${enable_ipv6}" = "yes"; then
819 AC_EGREP_CPP(yes, [
820 #include <linux/version.h>
821 /* 2.1.128 or later */
822 #if LINUX_VERSION_CODE >= 0x020180
823 yes
824 #endif],
825 [zebra_cv_ipv6=yes
826 zebra_cv_linux_ipv6=yes
827 AC_MSG_RESULT(Linux IPv6)])
828 else
829 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
830 then
paul7ea487b2003-03-17 02:05:07 +0000831 zebra_cv_ipv6=yes
832 zebra_cv_linux_ipv6=yes
833 AC_MSG_RESULT(Linux IPv6)
paula159ed92003-06-04 11:01:45 +0000834 fi
835 fi
paul7ea487b2003-03-17 02:05:07 +0000836
paula159ed92003-06-04 11:01:45 +0000837 if test "$zebra_cv_linux_ipv6" = "yes";then
hasso850d39f2005-06-30 13:52:20 +0000838 AC_MSG_CHECKING(whether libc has IPv6 support)
839 AC_TRY_LINK([#include <netinet/in.h>
840 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
841 [AC_MSG_RESULT(yes)
842 zebra_cv_ipv6=yes
843 zebra_cv_linux_ipv6=yes],
844 [AC_MSG_RESULT(no)
845 zebra_cv_ipv6=no
846 zebra_cv_linux_ipv6=no])
847 fi
848
849 if test "$zebra_cv_linux_ipv6" = "yes";then
paula159ed92003-06-04 11:01:45 +0000850 AC_MSG_CHECKING(for GNU libc >= 2.1)
851 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
852 AC_EGREP_CPP(yes, [
paul7ea487b2003-03-17 02:05:07 +0000853#include <features.h>
854#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
855 yes
paula159ed92003-06-04 11:01:45 +0000856#endif],
857 [glibc=yes
858 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
859 AC_MSG_RESULT(yes)],
860 AC_MSG_RESULT(no)
861 )
862 RIPNGD="ripngd"
863 OSPF6D="ospf6d"
864 if test "$glibc" != "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000865 INCLUDES="-I/usr/inet6/include"
866 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
867 LIB_IPV6="-L/usr/inet6/lib -linet6"
868 fi
paula159ed92003-06-04 11:01:45 +0000869 fi
870 fi
paul7ea487b2003-03-17 02:05:07 +0000871
872dnl -----------------------
873dnl Set IPv6 related values
874dnl -----------------------
paula159ed92003-06-04 11:01:45 +0000875 LIBS="$LIB_IPV6 $LIBS"
876 AC_SUBST(LIB_IPV6)
paul7ea487b2003-03-17 02:05:07 +0000877
paula159ed92003-06-04 11:01:45 +0000878 if test x"$RIPNGD" = x""; then
879 AC_MSG_RESULT(IPv4 only)
880 fi
paul7ea487b2003-03-17 02:05:07 +0000881fi
882
gdtfa3232e2003-12-03 17:52:30 +0000883dnl ------------------
884dnl IPv6 header checks
885dnl ------------------
886if test "x${zebra_cv_ipv6}" = "xyes"; then
887AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
888 netinet6/in6_var.h netinet6/nd6.h])
889fi
890
paul7ea487b2003-03-17 02:05:07 +0000891dnl --------------------
892dnl Daemon disable check
893dnl --------------------
894if test "${enable_zebra}" = "no";then
895 ZEBRA=""
896else
897 ZEBRA="zebra"
898fi
899
900if test "${enable_bgpd}" = "no";then
901 BGPD=""
902else
903 BGPD="bgpd"
904fi
905
906if test "${enable_ripd}" = "no";then
907 RIPD=""
908else
909 RIPD="ripd"
910fi
911
912if test "${enable_ospfd}" = "no";then
913 OSPFD=""
914else
915 OSPFD="ospfd"
916fi
917
ajsd0199432004-12-22 14:03:52 +0000918if test "${enable_watchquagga}" = "no";then
919 WATCHQUAGGA=""
920else
921 WATCHQUAGGA="watchquagga"
922fi
923
paul1ef74ef2003-03-21 15:16:05 +0000924OSPFCLIENT=""
925if test "${enable_opaque_lsa}" = "yes"; then
926 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +0000927 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +0000928
929 if test "${enable_ospfclient}" != "no";then
930 OSPFCLIENT="ospfclient"
931 fi
932 fi
933
paul7ea487b2003-03-17 02:05:07 +0000934fi
935
936case "${enable_ripngd}" in
937 "yes") RIPNGD="ripngd";;
938 "no" ) RIPNGD="";;
939 * ) ;;
940esac
941
942case "${enable_ospf6d}" in
943 "yes") OSPF6D="ospf6d";;
944 "no" ) OSPF6D="";;
945 * ) ;;
946esac
947
jardin9e867fe2003-12-23 08:56:18 +0000948case "${enable_isisd}" in
949 "yes") ISISD="isisd";;
950 "no" ) ISISD="";;
hassoae399ab2004-09-13 20:22:18 +0000951 * ) ;;
jardin9e867fe2003-12-23 08:56:18 +0000952esac
953
paul7ea487b2003-03-17 02:05:07 +0000954if test "${enable_bgp_announce}" = "no";then
955 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
956fi
957
958AC_SUBST(ZEBRA)
959AC_SUBST(BGPD)
960AC_SUBST(RIPD)
961AC_SUBST(RIPNGD)
962AC_SUBST(OSPFD)
963AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +0000964AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +0000965AC_SUBST(ISISD)
paul7ea487b2003-03-17 02:05:07 +0000966AC_SUBST(VTYSH)
967AC_SUBST(INCLUDES)
968AC_SUBST(CURSES)
969AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +0000970AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +0000971AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
972AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
973AC_CHECK_LIB(crypt, crypt)
974AC_CHECK_LIB(resolv, res_init)
975AC_CHECK_LIB(m, main)
976
977dnl ---------------------------------------------------
978dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
979dnl ---------------------------------------------------
paula159ed92003-06-04 11:01:45 +0000980AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
981AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
982AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
paul7ea487b2003-03-17 02:05:07 +0000983
984dnl ---------------------------
985dnl check system has GNU regexp
986dnl ---------------------------
987dnl AC_MSG_CHECKING(whether system has GNU regex)
988AC_CHECK_LIB(c, regexec,
989[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
990 LIB_REGEX=""],
991[LIB_REGEX="regex.o"])
992AC_SUBST(LIB_REGEX)
993
994dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +0000995dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +0000996dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +0000997if test "${enable_snmp}" = "yes"; then
998 LIBS="${LIBS} -lcrypto"
999 AC_CHECK_LIB(netsnmp, asn_parse_int,
1000 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1001 AC_DEFINE(HAVE_SNMP,,SNMP)
1002 LIBS="${LIBS} -lnetsnmp"],
1003 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1004
1005 for ac_snmp in /usr/include \
1006 /usr/local/include \
1007 /dev/null; do
1008 test -f "${ac_snmp}/net-snmp/library/asn1.h" && break
paul7ea487b2003-03-17 02:05:07 +00001009 done
paulb1fc9ac2006-01-31 10:09:27 +00001010
paul7ea487b2003-03-17 02:05:07 +00001011 case ${ac_snmp} in
paulb1fc9ac2006-01-31 10:09:27 +00001012 /dev/null)
1013 AC_MSG_ERROR([--enable-snmp given, but can not find header])
1014 ;;
1015 *)
1016 SNMP_INCLUDES="-I${ac_snmp}/net-snmp"
1017 SNMP_INCLUDES="${SNMP_INCLUDES} -I${ac_snmp}/net-snmp/library"
1018 ;;
paul7ea487b2003-03-17 02:05:07 +00001019 esac
paulb1fc9ac2006-01-31 10:09:27 +00001020
1021 AC_SUBST(SNMP_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001022fi
1023
1024dnl ----------------------------
1025dnl check sa_len of sockaddr
1026dnl ----------------------------
1027AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1028AC_TRY_COMPILE([#include <sys/types.h>
1029#include <sys/socket.h>
1030],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1031[AC_MSG_RESULT(yes)
1032 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1033 AC_MSG_RESULT(no))
1034
1035dnl ----------------------------
1036dnl check sin_len of sockaddr_in
1037dnl ----------------------------
1038AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1039AC_TRY_COMPILE([#include <sys/types.h>
1040#include <netinet/in.h>
1041],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1042[AC_MSG_RESULT(yes)
1043 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1044 AC_MSG_RESULT(no))
1045
1046dnl ----------------------------
1047dnl check sun_len of sockaddr_un
1048dnl ----------------------------
1049AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1050AC_TRY_COMPILE([#include <sys/types.h>
1051#include <sys/un.h>
1052],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1053[AC_MSG_RESULT(yes)
1054 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1055 AC_MSG_RESULT(no))
1056
1057dnl -----------------------------------
1058dnl check sin6_scope_id of sockaddr_in6
1059dnl -----------------------------------
1060if test "$zebra_cv_ipv6" = yes; then
1061 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1062 AC_TRY_COMPILE([#include <sys/types.h>
1063#include <netinet/in.h>
1064],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1065[AC_MSG_RESULT(yes)
1066 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1067 AC_MSG_RESULT(no))
1068fi
1069
1070dnl ----------------------------
1071dnl check socklen_t exist or not
1072dnl ----------------------------
1073AC_MSG_CHECKING(whther socklen_t is defined)
1074AC_TRY_COMPILE([#include <sys/types.h>
1075#include <sys/socket.h>
1076#include <netinet/in.h>
1077],[socklen_t ac_x;],
1078[AC_MSG_RESULT(yes)
1079 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1080 AC_MSG_RESULT(no))
1081
1082dnl ------------------------
1083dnl check struct sockaddr_dl
1084dnl ------------------------
1085AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1086AC_EGREP_HEADER(sockaddr_dl,
1087net/if_dl.h,
1088[AC_MSG_RESULT(yes)
1089 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1090 AC_MSG_RESULT(no))
1091
1092dnl --------------------------
1093dnl check structure ifaliasreq
1094dnl --------------------------
1095AC_MSG_CHECKING(whether struct ifaliasreq exist)
1096AC_EGREP_HEADER(ifaliasreq,
1097net/if.h,
1098[AC_MSG_RESULT(yes)
1099 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1100 AC_MSG_RESULT(no))
1101
1102dnl ----------------------------
1103dnl check structure in6_aliasreq
1104dnl ----------------------------
hasso71c0fb52003-05-25 20:18:13 +00001105AC_MSG_CHECKING(whether struct in6_aliasreq exist)
paul7ea487b2003-03-17 02:05:07 +00001106AC_EGREP_HEADER(in6_aliasreq,
1107netinet6/in6_var.h,
1108[AC_MSG_RESULT(yes)
1109 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1110 AC_MSG_RESULT(no))
1111
hasso71c0fb52003-05-25 20:18:13 +00001112dnl -----------------------------------
1113dnl check ifra_lifetime of in6_aliasreq
1114dnl -----------------------------------
1115AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1116AC_TRY_COMPILE([#include <sys/types.h>
1117#include <netinet6/in6_var.h>
1118],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1119[AC_MSG_RESULT(yes)
paula159ed92003-06-04 11:01:45 +00001120 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
hasso71c0fb52003-05-25 20:18:13 +00001121 AC_MSG_RESULT(no))
1122
paul7ea487b2003-03-17 02:05:07 +00001123dnl ---------------------------
1124dnl check structure rt_addrinfo
1125dnl ---------------------------
1126AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1127AC_EGREP_HEADER(rt_addrinfo,
1128net/route.h,
1129[AC_MSG_RESULT(yes)
1130 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1131 AC_MSG_RESULT(no))
1132
1133dnl --------------------------
1134dnl check structure in_pktinfo
1135dnl --------------------------
1136AC_MSG_CHECKING(whether struct in_pktinfo exist)
1137AC_TRY_COMPILE([#include <netinet/in.h>
1138],[struct in_pktinfo ac_x;],
1139[AC_MSG_RESULT(yes)
1140 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1141 AC_MSG_RESULT(no))
1142
vincent29c4c9b2005-03-25 13:05:47 +00001143dnl ----------------------------------
1144dnl check struct nd_opt_homeagent_info
1145dnl ----------------------------------
1146AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1147AC_EGREP_HEADER(nd_opt_homeagent_info,
1148netinet/icmp6.h,
1149[AC_MSG_RESULT(yes)
1150 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1151 AC_MSG_RESULT(no))
1152
1153dnl --------------------------------
1154dnl check struct nd_opt_adv_interval
1155dnl --------------------------------
1156AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1157AC_EGREP_HEADER(nd_opt_adv_interval,
1158netinet/icmp6.h,
1159[AC_MSG_RESULT(yes)
1160 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1161 AC_MSG_RESULT(no))
1162
1163dnl ------------------------------------
1164dnl check fields in nd_opt_adv_interval
1165dnl ------------------------------------
1166AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1167AC_EGREP_HEADER(nd_opt_ai_type,
1168netinet/icmp6.h,
1169[AC_MSG_RESULT(yes)
1170 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1171 AC_MSG_RESULT(no))
1172
paul7ea487b2003-03-17 02:05:07 +00001173dnl --------------------------------------
1174dnl checking for getrusage struct and call
1175dnl --------------------------------------
1176AC_MSG_CHECKING(whether getrusage is available)
1177AC_TRY_COMPILE([#include <sys/resource.h>
1178],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1179[AC_MSG_RESULT(yes)
1180 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1181 AC_MSG_RESULT(no))
1182
pauledd7c242003-06-04 13:59:38 +00001183dnl -------------------
1184dnl capabilities checks
1185dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001186if test "${enable_capabilities}" != "no"; then
1187 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1188 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1189 [AC_MSG_RESULT(yes)
1190 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1191 quagga_ac_keepcaps="yes"],
1192 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001193 )
hasso41d3fc92004-04-06 11:59:00 +00001194 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1195 AC_CHECK_HEADERS(sys/capability.h)
1196 fi
1197 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1198 AC_CHECK_LIB(cap, cap_init,
1199 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1200 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001201 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001202 )
paulceacedb2005-09-29 14:39:32 +00001203 else
1204 AC_CHECK_HEADERS(priv.h,
1205 [AC_MSG_CHECKING(Solaris style privileges are available)
1206 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1207 [AC_MSG_RESULT(yes)
1208 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1209 quagga_ac_scaps="yes"],
1210 AC_MSG_RESULT(no)
1211 )
1212 ]
1213 )
1214 fi
1215 if test x"${quagga_ac_scaps}" = x"yes" \
1216 -o x"${quagga_ac_lcaps}" = x"yes"; then
1217 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001218 fi
pauledd7c242003-06-04 13:59:38 +00001219fi
1220AC_SUBST(LIBCAP)
1221
ajs40abf232005-01-12 17:27:27 +00001222dnl -------------------
1223dnl test for ucontext.h
1224dnl -------------------
1225AC_CHECK_HEADERS(ucontext.h)
1226
paulfb2d1502003-06-04 09:40:54 +00001227dnl ---------------------------
1228dnl check for glibc 'backtrace'
1229dnl ---------------------------
1230if test "${glibc}" = "yes"; then
1231 AC_CHECK_HEADER(execinfo.h)
1232fi
1233if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1234 AC_CHECK_FUNC(backtrace,
1235 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1236 )
1237fi
1238
Paul Jakma41be32b2006-03-30 13:53:59 +00001239dnl -----------------------------------------
1240dnl check for malloc mallinfo struct and call
1241dnl this must try and link using LIBS, in
1242dnl order to check no alternative allocator
1243dnl has been specified, which might not provide
1244dnl mallinfo, e.g. such as Umem on Solaris.
1245dnl -----------------------------------------
1246AC_CHECK_HEADERS(malloc.h,
1247 [AC_MSG_CHECKING(whether mallinfo is available)
1248 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1249 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1250 [AC_MSG_RESULT(yes)
1251 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1252 AC_MSG_RESULT(no)
1253 )
1254 ]
1255)
1256
paul408ad942003-05-20 00:03:33 +00001257dnl ----------
1258dnl configure date
1259dnl ----------
1260CONFDATE=`date '+%Y%m%d'`
1261AC_SUBST(CONFDATE)
1262
paul7ea487b2003-03-17 02:05:07 +00001263dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001264dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001265dnl ------------------------------
1266if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001267 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001268else
paule8f29842003-08-12 13:08:31 +00001269 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001270fi
1271if test "${localstatedir}" = '${prefix}/var'; then
paula159ed92003-06-04 11:01:45 +00001272 AC_CACHE_CHECK(state directory,ac_statedir,
paule8f29842003-08-12 13:08:31 +00001273 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1274 ${quagga_statedir_prefix}/var/adm dnl
1275 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001276 /var/run dnl
1277 /var/adm dnl
1278 /etc dnl
1279 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001280 do
paule8f29842003-08-12 13:08:31 +00001281 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001282 done
paule8f29842003-08-12 13:08:31 +00001283 quagga_statedir=$QUAGGA_STATE_DIR])
paul23bd12c2003-04-07 06:11:09 +00001284else
paule8f29842003-08-12 13:08:31 +00001285 quagga_statedir=${localstatedir}
paula159ed92003-06-04 11:01:45 +00001286 AC_MSG_CHECKING(directory to use for state file)
paule8f29842003-08-12 13:08:31 +00001287 AC_MSG_RESULT(${quagga_statedir})
paul26275b02005-04-11 07:10:47 +00001288 AC_SUBST(quagga_statedir)
paul23bd12c2003-04-07 06:11:09 +00001289fi
paule8f29842003-08-12 13:08:31 +00001290if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001291 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1292fi
1293
paule8f29842003-08-12 13:08:31 +00001294AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1295AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1296AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1297AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1298AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1299AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001300AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
ajsd0199432004-12-22 14:03:52 +00001301AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001302AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1303AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1304AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1305AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1306AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1307AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1308AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001309AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
ajs515210b2004-12-22 15:35:12 +00001310AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001311
paul1eb8ef22005-04-07 07:30:20 +00001312dnl -------------------------------
1313dnl Quagga sources should always be
1314dnl current wrt interfaces. Dont
1315dnl allow deprecated interfaces to
1316dnl be exposed.
1317dnl -------------------------------
1318AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1319
paul7ea487b2003-03-17 02:05:07 +00001320dnl ---------------------------
1321dnl Check htonl works correctly
1322dnl ---------------------------
1323AC_MSG_CHECKING(for working htonl)
1324AC_CACHE_VAL(ac_cv_htonl_works, [
1325AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1326#include <sys/types.h>
1327#endif
1328#ifdef HAVE_NETDB_H
1329#include <netdb.h>
1330#endif
1331#ifdef HAVE_NETINET_IN_H
1332#include <netinet/in.h>
1333#endif],
1334[htonl (0);],
1335ac_cv_htonl_works=yes,
1336ac_cv_htonl_works=no)])
1337AC_MSG_RESULT($ac_cv_htonl_works)
1338
paul14c17fd2004-11-07 22:34:23 +00001339AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001340 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
jardin9e867fe2003-12-23 08:56:18 +00001341 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
paul14c17fd2004-11-07 22:34:23 +00001342 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001343 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001344 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001345 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001346 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001347 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001348 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001349 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001350AC_CONFIG_FILES([solaris/Makefile])
1351
paul670bbf12004-11-12 09:05:00 +00001352AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001353## Hack, but working solution to avoid rebuilding of quagga.info.
1354## It's already in CVS until texinfo 4.7 is more common.
paul14c1f182005-05-13 20:11:53 +00001355AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
paul14c17fd2004-11-07 22:34:23 +00001356AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001357
1358echo "
hassoc89f6492004-08-26 12:21:28 +00001359Quagga configuration
1360--------------------
1361quagga version : ${PACKAGE_VERSION}
paul7ea487b2003-03-17 02:05:07 +00001362host operationg system : ${host_os}
1363source code location : ${srcdir}
1364compiler : ${CC}
1365compiler flags : ${CFLAGS}
hasso2d582282005-03-28 15:29:07 +00001366includes : ${INCLUDES} ${SNMP_INCLUDES}
hassoc0689392005-08-25 12:00:58 +00001367linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
paule8f29842003-08-12 13:08:31 +00001368state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001369config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001370example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001371user to run as : ${enable_user}
1372group to run as : ${enable_group}
1373group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001374config file mask : ${enable_configfile_mask}
1375log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001376
1377The above user and group must have read/write access to the state file
1378directory and to the config files in the config file directory.
paul7ea487b2003-03-17 02:05:07 +00001379"