2 AC_INIT([ipset], [7.1], [kadlec@blackhole.kfki.hu])
3 AC_CONFIG_AUX_DIR([build-aux])
5 AC_CONFIG_MACRO_DIR([m4])
6 AC_CONFIG_HEADER([config.h])
7 AM_INIT_AUTOMAKE([foreign subdir-objects tar-pax])
8 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
12 LT_CONFIG_LTDL_DIR([libltdl])
13 LTDL_INIT([nonrecursive])
17 dnl Shortcut: Linux supported alone
19 *-*-linux* | *-*-uclinux*) ;;
20 *) AC_MSG_ERROR([Linux systems supported exclusively!]);;
23 dnl Optionnally disable building the kernel module
25 AS_HELP_STRING([--with-kmod=yes/no],
26 [Build the kernel module (default: yes)]),
27 [BUILDKMOD="$withval";],
29 AM_CONDITIONAL(WITH_KMOD, test "$BUILDKMOD" == "yes")
31 dnl Additional arguments
32 dnl Kernel build directory or source tree
34 AS_HELP_STRING([--with-kbuild=PATH],
35 [Path to kernel build directory]),
36 [KBUILDDIR="$withval";])
37 AC_ARG_WITH([ksource],
38 AS_HELP_STRING([--with-ksource=PATH],
39 [Path to kernel source directory, if not the same as the kernel build directory]),
40 [KSOURCEDIR="$withval";])
41 AM_CONDITIONAL(WITH_KBUILDDIR, test "$KBUILDDIR" != "")
44 dnl ipset bash compspec - bash shell programmable completion
45 AC_ARG_ENABLE([bashcompl],
46 AS_HELP_STRING([--enable-bashcompl],
47 [Install bash completion for ipset]),
48 [enable_bashcompl="$enableval"], [enable_bashcompl="no"])
50 # backward compatibility with older pkg-config
51 m4_ifndef([PKG_CHECK_VAR], [
52 # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
53 # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
54 # -------------------------------------------
55 # Retrieves the value of the pkg-config variable for the given module.
56 AC_DEFUN([PKG_CHECK_VAR],
57 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
58 AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
60 _PKG_CONFIG([$1], [variable="][$3]["], [$2])
61 AS_VAR_COPY([$1], [pkg_cv_][$1])
63 AS_VAR_IF([$1], [""], [$5], [$4])dnl
67 if test "x$enable_bashcompl" = "xyes"; then
68 PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir], , bashcompdir="${sysconfdir}/bash_completion.d")
72 if test "$BUILDKMOD" == "yes"
74 dnl Sigh: check kernel version dependencies
75 if test "$KBUILDDIR" != ""
77 kbuilddir="$KBUILDDIR"
79 kbuilddir="/lib/modules/`uname -r`/build"
82 if test -n "$KSOURCEDIR"; then
83 ksourcedir="$KSOURCEDIR"
84 elif test -e "$kbuilddir/include/linux/netfilter/nfnetlink.h"; then
85 ksourcedir="$kbuilddir"
87 ksourcedir="/lib/modules/$(uname -r)/source"
89 if test ! -e "$ksourcedir/include/linux/netfilter/nfnetlink.h"
91 AC_MSG_ERROR([Invalid kernel source directory $ksourcedir])
94 if test ! -e "$kbuilddir/.config"
96 AC_MSG_ERROR([The kernel build directory $kbuilddir is not configured])
102 if ! $GREP -q "NFNL_SUBSYS_IPSET" "$ksourcedir/include/linux/netfilter/nfnetlink.h" && \
103 ! $GREP -q "NFNL_SUBSYS_IPSET" "$ksourcedir/include/uapi/linux/netfilter/nfnetlink.h";
105 AC_MSG_ERROR([The kernel source directory $ksourcedir is not patched with netlink.patch to support ipset])
109 dnl Maximal number of sets supported by the kernel, default 256
110 AC_ARG_WITH([maxsets],
111 AS_HELP_STRING([--with-maxsets=256],
112 [Maximal numer of sets supported by the kernel]),
113 [MAXSETS="$withval";])
114 AM_CONDITIONAL(WITH_MAXSETS, test "$MAXSETS" != "")
117 dnl Verbose compiling
118 AC_ARG_ENABLE([verbose],
119 AS_HELP_STRING([--enable-verbose],
120 [Enable verbose mode at compiling/linking.]),
121 [case "${enableval}" in
122 yes) enable_verbose=yes ;;
123 no) enable_verbose=no ;;
124 *) AC_MSG_ERROR([bad value ${enableval} for --enable-verbose]) ;;
125 esac], [enable_verbose=no])
127 AC_ARG_ENABLE([debug],
128 AS_HELP_STRING([--enable-debug], [enable debug messages @<:@default=disabled@:>@]),
129 [], [enable_debug=no])
130 AS_IF([test "x$enable_debug" = "xyes"], [
131 AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
133 AM_CONDITIONAL([ENABLE_DEBUG], [test "x$enable_debug" = xyes])
135 dnl Enable type modules
136 AC_ARG_ENABLE([settype_modules],
137 AS_HELP_STRING([--enable-settype-modules],
138 [Enable set type modules support]),
139 [enable_settype_modules="$enableval"],
140 [enable_settype_modules="no"])
142 AC_ARG_WITH([settype_modules_list],
143 AS_HELP_STRING([--with-settype-modules-list="mod1 mod2 ..."],
144 [List of dynamic loading modules, ignored if settype-modules is disabled. It could be "all" to build all available settypes as modules]),
145 [SETTYPE_MODLIST_RAW="$withval";])
148 if test "x$enable_settype_modules" = "xyes"; then
149 for mod in $SETTYPE_MODLIST_RAW; do
150 if echo $mod | grep "all"; then
153 if echo $mod | grep "ipset_"; then
160 SETTYPE_MODLIST="${SETTYPE_MODLIST} $m"
163 AC_MSG_RESULT([checking for configuration with dynamic loading modules... $SETTYPE_MODLIST_RAW])
165 AC_SUBST(SETTYPE_MODLIST)
167 AM_CONDITIONAL([ENABLE_SETTYPE_MODULES], [test "x$enable_settype_modules" = xyes])
169 AM_CONDITIONAL([ENABLE_STATIC], [test "x$enable_static" = xyes])
170 AM_CONDITIONAL([ENABLE_SHARED], [test "x$enable_shared" = xyes])
172 dnl Checks for programs
181 dnl Checks for libraries
182 PKG_CHECK_MODULES([libmnl], [libmnl >= 1])
184 dnl Checks for header files
186 dnl Checks for declarations
187 AC_CHECK_DECLS([NLA_F_NESTED, NLA_F_NET_BYTEORDER, NLA_TYPE_MASK],,
188 [AC_MSG_ERROR([System kernel header files are older than 2.6.24, use CFLAGS for non-default location])],
189 [#include <sys/socket.h>
190 #include <linux/netlink.h>])
192 dnl Checks for typedefs, structures
193 AC_CHECK_TYPES([union nf_inet_addr],,,[#include <linux/types.h>
194 #include <netinet/in.h>
195 #include <linux/netfilter.h>])
197 dnl Checks for functions
198 AC_CHECK_FUNCS(gethostbyname2)
200 if test "$BUILDKMOD" == "yes"
202 dnl Check kernel incompatibilities... Ugly like hell
203 AC_MSG_CHECKING([kernel source for struct xt_action_param])
204 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
205 $GREP -q 'struct xt_action_param' $ksourcedir/include/linux/netfilter/x_tables.h; then
207 AC_SUBST(HAVE_STRUCT_XT_ACTION_PARAM, define)
210 AC_SUBST(HAVE_STRUCT_XT_ACTION_PARAM, undef)
213 AC_MSG_CHECKING([kernel source for vzalloc])
214 if test -f $ksourcedir/include/linux/vmalloc.h && \
215 $GREP -q 'vzalloc' $ksourcedir/include/linux/vmalloc.h; then
217 AC_SUBST(HAVE_VZALLOC, define)
220 AC_SUBST(HAVE_VZALLOC, undef)
223 AC_MSG_CHECKING([kernel source for ether_addr_equal])
224 if test -f $ksourcedir/include/linux/etherdevice.h && \
225 $GREP -q 'ether_addr_equal' $ksourcedir/include/linux/etherdevice.h; then
227 AC_SUBST(HAVE_ETHER_ADDR_EQUAL, define)
230 AC_SUBST(HAVE_ETHER_ADDR_EQUAL, undef)
233 AC_MSG_CHECKING([kernel source for is_zero_ether_addr])
234 if test -f $ksourcedir/include/linux/etherdevice.h && \
235 $GREP -q 'is_zero_ether_addr' $ksourcedir/include/linux/etherdevice.h; then
237 AC_SUBST(HAVE_IS_ZERO_ETHER_ADDR, define)
240 AC_SUBST(HAVE_IS_ZERO_ETHER_ADDR, undef)
243 AC_MSG_CHECKING([kernel source for nla_put_be16])
244 if test -f $ksourcedir/include/net/netlink.h && \
245 $GREP -q 'nla_put_be16' $ksourcedir/include/net/netlink.h; then
247 AC_SUBST(HAVE_NLA_PUT_BE16, define)
250 AC_SUBST(HAVE_NLA_PUT_BE16, undef)
253 AC_MSG_CHECKING([kernel source for nla_put_be64])
254 if test -f $ksourcedir/include/net/netlink.h && \
255 $GREP -q 'nla_put_be64' $ksourcedir/include/net/netlink.h; then
257 AC_SUBST(HAVE_NLA_PUT_BE64, define)
260 AC_SUBST(HAVE_NLA_PUT_BE64, undef)
263 AC_MSG_CHECKING([kernel source for nla_put_64bit])
264 if test -f $ksourcedir/include/net/netlink.h && \
265 $GREP -q 'nla_put_64bit' $ksourcedir/include/net/netlink.h; then
267 AC_SUBST(HAVE_NLA_PUT_64BIT, define)
270 AC_SUBST(HAVE_NLA_PUT_64BIT, undef)
273 AC_MSG_CHECKING([kernel source for portid in nl_info])
274 if test -f $ksourcedir/include/linux/netlink.h && \
275 $AWK '/^struct netlink_skb_parms /,/^}/' $ksourcedir/include/linux/netlink.h | $GREP -q 'portid;'; then
277 AC_SUBST(HAVE_NL_INFO_PORTID, define)
280 AC_SUBST(HAVE_NL_INFO_PORTID, undef)
283 AC_MSG_CHECKING([kernel source for netlink_dump_start args])
284 if test -f $ksourcedir/include/linux/netlink.h && \
285 $AWK '/ netlink_dump_start\(/,/\)/' $ksourcedir/include/linux/netlink.h | $GREP -q 'done.*;'; then
286 AC_MSG_RESULT(5 args)
287 AC_SUBST(HAVE_NETLINK_DUMP_START_ARGS, 5)
288 elif test -f $ksourcedir/include/linux/netlink.h && \
289 $AWK '/ netlink_dump_start\(/,/\)/' $ksourcedir/include/linux/netlink.h | $GREP -q 'min_dump_alloc.*;'; then
290 AC_MSG_RESULT(6 args)
291 AC_SUBST(HAVE_NETLINK_DUMP_START_ARGS, 6)
293 AC_MSG_RESULT(4 args)
294 AC_SUBST(HAVE_NETLINK_DUMP_START_ARGS, 4)
297 AC_MSG_CHECKING([kernel source for ns_capable])
298 if test -f $ksourcedir/include/linux/capability.h && \
299 $GREP -q 'ns_capable' $ksourcedir/include/linux/capability.h; then
301 AC_SUBST(HAVE_NS_CAPABLE, define)
304 AC_SUBST(HAVE_NS_CAPABLE, undef)
307 AC_MSG_CHECKING([kernel source for nfnl_lock per subsys])
308 if test -f $ksourcedir/include/linux/netfilter/nfnetlink.h && \
309 $GREP -q 'nfnl_lock.* subsys_id' $ksourcedir/include/linux/netfilter/nfnetlink.h; then
311 AC_SUBST(HAVE_NFNL_LOCK_SUBSYS, define)
314 AC_SUBST(HAVE_NFNL_LOCK_SUBSYS, undef)
317 AC_MSG_CHECKING([kernel source for export.h])
318 if test -f $ksourcedir/include/linux/export.h; then
320 AC_SUBST(HAVE_EXPORT_H, define)
323 AC_SUBST(HAVE_EXPORT_H, undef)
326 AC_MSG_CHECKING([kernel source for ipv6_skip_exthdr args])
327 if test -f $ksourcedir/include/net/ipv6.h && \
328 $AWK '/ ipv6_skip_exthdr\(/,/\)/' $ksourcedir/include/net/ipv6.h | $GREP -q 'frag_offp'; then
329 AC_MSG_RESULT(4 args)
330 AC_SUBST(HAVE_IPV6_SKIP_EXTHDR_ARGS, 4)
332 AC_MSG_RESULT(3 args)
333 AC_SUBST(HAVE_IPV6_SKIP_EXTHDR_ARGS, 3)
336 AC_MSG_CHECKING([kernel source for bool checkentry function prototype])
337 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
338 $GREP -q 'bool .\*checkentry.' $ksourcedir/include/linux/netfilter/x_tables.h; then
340 AC_SUBST(HAVE_CHECKENTRY_BOOL, define)
343 AC_SUBST(HAVE_CHECKENTRY_BOOL, undef)
346 AC_MSG_CHECKING([kernel source for old struct xt_target_param])
347 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
348 $GREP -q '^struct xt_target_param ' $ksourcedir/include/linux/netfilter/x_tables.h; then
350 AC_SUBST(HAVE_XT_TARGET_PARAM, define)
353 AC_SUBST(HAVE_XT_TARGET_PARAM, undef)
356 AC_MSG_CHECKING([kernel source for id in struct pernet_operations])
357 if test -f $ksourcedir/include/net/net_namespace.h && \
358 $AWK '/^struct pernet_operations /,/^}/' $ksourcedir/include/net/net_namespace.h | $GREP -q 'int \*id;'; then
360 AC_SUBST(HAVE_NET_OPS_ID, define)
363 AC_SUBST(HAVE_NET_OPS_ID, undef)
366 AC_MSG_CHECKING([kernel source for async in struct pernet_operations])
367 if test -f $ksourcedir/include/net/net_namespace.h && \
368 $AWK '/^struct pernet_operations /,/^}/' $ksourcedir/include/net/net_namespace.h | $GREP -q 'bool async;'; then
370 AC_SUBST(HAVE_NET_OPS_ASYNC, define)
373 AC_SUBST(HAVE_NET_OPS_ASYNC, undef)
376 AC_MSG_CHECKING([kernel source for user_ns in struct net])
377 if test -f $ksourcedir/include/net/net_namespace.h && \
378 $AWK '/^struct net \{/,/^}/' $ksourcedir/include/net/net_namespace.h | $GREP -q 'user_ns'; then
380 AC_SUBST(HAVE_USER_NS_IN_STRUCT_NET, define)
383 AC_SUBST(HAVE_USER_NS_IN_STRUCT_NET, undef)
386 AC_MSG_CHECKING([kernel source for rbtree_postorder_for_each_entry_safe])
387 if test -f $ksourcedir/include/linux/rbtree.h && \
388 $GREP -q 'rbtree_postorder_for_each_entry_safe' $ksourcedir/include/linux/rbtree.h; then
390 AC_SUBST(HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE, define)
393 AC_SUBST(HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE, undef)
396 AC_MSG_CHECKING([kernel source for kvcalloc])
397 if test -f $ksourcedir/include/linux/mm.h && \
398 $GREP -q 'kvcalloc' $ksourcedir/include/linux/mm.h; then
400 AC_SUBST(HAVE_KVCALLOC, define)
403 AC_SUBST(HAVE_KVCALLOC, undef)
406 AC_MSG_CHECKING([kernel source for kvfree])
407 if test -f $ksourcedir/include/linux/mm.h && \
408 $GREP -q 'kvfree' $ksourcedir/include/linux/mm.h; then
410 AC_SUBST(HAVE_KVFREE, define)
413 AC_SUBST(HAVE_KVFREE, undef)
416 AC_MSG_CHECKING([kernel source for struct net in struct xt_mtchk_param])
417 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
418 $AWK '/^struct xt_mtchk_param /,/^}/' $ksourcedir/include/linux/netfilter/x_tables.h | \
419 $GREP -q 'struct net '; then
421 AC_SUBST(HAVE_XT_MTCHK_PARAM_STRUCT_NET, define)
424 AC_SUBST(HAVE_XT_MTCHK_PARAM_STRUCT_NET, undef)
427 AC_MSG_CHECKING([kernel source for struct net in the change function of tcf_ematch_ops])
428 if test -f $ksourcedir/include/net/pkt_cls.h && \
429 $AWK '/^struct tcf_ematch_ops /,/^}/' $ksourcedir/include/net/pkt_cls.h | \
430 $GREP -q '\*change..struct net \*net'; then
432 AC_SUBST(HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET, define)
435 AC_SUBST(HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET, undef)
438 AC_MSG_CHECKING([kernel source for struct net in struct tcf_ematch])
439 if test -f $ksourcedir/include/net/pkt_cls.h && \
440 $AWK '/^struct tcf_ematch /,/^}/' $ksourcedir/include/net/pkt_cls.h | \
441 $GREP -q 'struct net'; then
443 AC_SUBST(HAVE_TCF_EMATCH_STRUCT_NET, define)
446 AC_SUBST(HAVE_TCF_EMATCH_STRUCT_NET, undef)
449 AC_MSG_CHECKING([kernel source for list_last_entry])
450 if test -f $ksourcedir/include/linux/list.h && \
451 $GREP -q 'list_last_entry' $ksourcedir/include/linux/list.h; then
453 AC_SUBST(HAVE_LIST_LAST_ENTRY, define)
456 AC_SUBST(HAVE_LIST_LAST_ENTRY, undef)
459 AC_MSG_CHECKING([kernel source for list_next_entry])
460 if test -f $ksourcedir/include/linux/list.h && \
461 $GREP -q 'list_next_entry' $ksourcedir/include/linux/list.h; then
463 AC_SUBST(HAVE_LIST_NEXT_ENTRY, define)
466 AC_SUBST(HAVE_LIST_NEXT_ENTRY, undef)
469 AC_MSG_CHECKING([kernel source for ether_addr_copy])
470 if test -f $ksourcedir/include/linux/etherdevice.h && \
471 $GREP -q 'ether_addr_copy' $ksourcedir/include/linux/etherdevice.h; then
473 AC_SUBST(HAVE_ETHER_ADDR_COPY, define)
476 AC_SUBST(HAVE_ETHER_ADDR_COPY, undef)
479 AC_MSG_CHECKING([kernel source for nf_bridge_get_physindev])
480 if test -f $ksourcedir/include/linux/netfilter_bridge.h && \
481 $GREP -q 'nf_bridge_get_physindev' $ksourcedir/include/linux/netfilter_bridge.h; then
483 AC_SUBST(HAVE_NF_BRIDGE_GET_PHYSDEV, define)
486 AC_SUBST(HAVE_NF_BRIDGE_GET_PHYSDEV, undef)
489 AC_MSG_CHECKING([kernel source for nla_put_in_addr])
490 if test -f $ksourcedir/include/net/netlink.h && \
491 $GREP -q 'nla_put_in_add' $ksourcedir/include/net/netlink.h; then
493 AC_SUBST(HAVE_NLA_PUT_IN_ADDR, define)
496 AC_SUBST(HAVE_NLA_PUT_IN_ADDR, undef)
499 AC_MSG_CHECKING([kernel source for struct net in the call() function in struct nfnl_callback])
500 if test -f $ksourcedir/include/linux/netfilter/nfnetlink.h && \
501 $AWK '/^struct nfnl_callback /,/\);$/' $ksourcedir/include/linux/netfilter/nfnetlink.h | \
502 $GREP -q 'struct net'; then
504 AC_SUBST(HAVE_NET_IN_NFNL_CALLBACK_FN, define)
507 AC_SUBST(HAVE_NET_IN_NFNL_CALLBACK_FN, undef)
510 AC_MSG_CHECKING([kernel source for EXPORT_SYMBOL_GPL in module.h])
511 if test -f $ksourcedir/include/linux/module.h && \
512 $GREP -q 'EXPORT_SYMBOL_GPL' $ksourcedir/include/linux/module.h; then
514 AC_SUBST(HAVE_EXPORT_SYMBOL_GPL_IN_MODULE_H, define)
517 AC_SUBST(HAVE_EXPORT_SYMBOL_GPL_IN_MODULE_H, undef)
520 AC_MSG_CHECKING([kernel source for tc_skb_protocol in pkt_sched.h])
521 if test -f $ksourcedir/include/net/pkt_sched.h && \
522 $GREP -q 'tc_skb_protocol' $ksourcedir/include/net/pkt_sched.h; then
524 AC_SUBST(HAVE_TC_SKB_PROTOCOL, define)
527 AC_SUBST(HAVE_TC_SKB_PROTOCOL, undef)
530 AC_MSG_CHECKING([kernel source for struct net in struct xt_action_param])
531 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
532 $AWK '/^struct xt_action_param /,/^}/' $ksourcedir/include/linux/netfilter/x_tables.h | \
533 $GREP -q 'struct net '; then
535 AC_SUBST(HAVE_NET_IN_XT_ACTION_PARAM, define)
538 AC_SUBST(HAVE_NET_IN_XT_ACTION_PARAM, undef)
541 AC_MSG_CHECKING([kernel source for struct nf_hook_state in struct xt_action_param])
542 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
543 $AWK '/^struct xt_action_param /,/^}/' $ksourcedir/include/linux/netfilter/x_tables.h | \
544 $GREP -q 'struct nf_hook_state '; then
546 AC_SUBST(HAVE_STATE_IN_XT_ACTION_PARAM, define)
549 AC_SUBST(HAVE_STATE_IN_XT_ACTION_PARAM, undef)
552 AC_MSG_CHECKING([kernel source for xt_family() in x_tables.h])
553 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
554 $GREP -q 'xt_family' $ksourcedir/include/linux/netfilter/x_tables.h; then
556 AC_SUBST(HAVE_XT_FAMILY, define)
559 AC_SUBST(HAVE_XT_FAMILY, undef)
562 AC_MSG_CHECKING([kernel source for xt_net() in x_tables.h])
563 if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
564 $GREP -q 'xt_net' $ksourcedir/include/linux/netfilter/x_tables.h; then
566 AC_SUBST(HAVE_XT_NET, define)
569 AC_SUBST(HAVE_XT_NET, undef)
572 AC_MSG_CHECKING([kernel source for nfnl_msg_type() in nfnetlink.h])
573 if test -f $ksourcedir/include/linux/netfilter/nfnetlink.h && \
574 $GREP -q 'nfnl_msg_type' $ksourcedir/include/linux/netfilter/nfnetlink.h; then
576 AC_SUBST(HAVE_NFNL_MSG_TYPE, define)
579 AC_SUBST(HAVE_NFNL_MSG_TYPE, undef)
582 AC_MSG_CHECKING([kernel source for netlink extended ACK])
583 if test -f $ksourcedir/include/linux/netlink.h && \
584 $AWK '/^extern void netlink_ack\(/,/\)/' $ksourcedir/include/linux/netlink.h | $GREP -q 'const struct netlink_ext_ack'; then
586 AC_SUBST(HAVE_NETLINK_EXTENDED_ACK, define)
589 AC_SUBST(HAVE_NETLINK_EXTENDED_ACK, undef)
592 AC_MSG_CHECKING([kernel source for passing extended ACK struct to parsing functions])
593 if test -f $ksourcedir/include/net/netlink.h && \
594 $AWK '/^static inline int nla_parse_nested\(/,/\)/' $ksourcedir/include/net/netlink.h | $GREP -q 'struct netlink_ext_ack'; then
596 AC_SUBST(HAVE_PASSING_EXTENDED_ACK_TO_PARSERS, define)
599 AC_SUBST(HAVE_PASSING_EXTENDED_ACK_TO_PARSERS, undef)
602 AC_MSG_CHECKING([kernel source for passing extended ACK struct to callback functions])
603 if test -f $ksourcedir/include/linux/netfilter/nfnetlink.h && \
604 $AWK '/^struct nfnl_callback /,/^}/' $ksourcedir/include/linux/netfilter/nfnetlink.h | $GREP -q 'struct netlink_ext_ack'; then
606 AC_SUBST(HAVE_PASSING_EXTENDED_ACK_TO_CALLBACKS, define)
609 AC_SUBST(HAVE_PASSING_EXTENDED_ACK_TO_CALLBACKS, undef)
612 AC_MSG_CHECKING([kernel source for no typedef sctp_sctphdr_t])
613 if test -f $ksourcedir/include/linux/sctp.h && \
614 $GREP -q '^typedef struct sctphdr' $ksourcedir/include/linux/sctp.h; then
616 AC_SUBST(HAVE_TYPEDEF_SCTP_SCTPHDR_T, define)
619 AC_SUBST(HAVE_TYPEDEF_SCTP_SCTPHDR_T, undef)
622 AC_MSG_CHECKING([kernel source for timer_setup in timer.h])
623 if test -f $ksourcedir/include/linux/timer.h && \
624 $GREP -q ' timer_setup' $ksourcedir/include/linux/timer.h; then
626 AC_SUBST(HAVE_TIMER_SETUP, define)
629 AC_SUBST(HAVE_TIMER_SETUP, undef)
632 AC_MSG_CHECKING([kernel source for lockdep_nfnl_is_held() in nfnetlink.h])
633 if test -f $ksourcedir/include/linux/netfilter/nfnetlink.h && \
634 $GREP -q ' lockdep_nfnl_is_held' $ksourcedir/include/linux/netfilter/nfnetlink.h; then
636 AC_SUBST(HAVE_LOCKDEP_NFNL_IS_HELD, define)
639 AC_SUBST(HAVE_LOCKDEP_NFNL_IS_HELD, undef)
642 AC_MSG_CHECKING([kernel source for strscpy() in string.h])
643 if test -f $ksourcedir/include/linux/timer.h && \
644 $GREP -q ' strscpy' $ksourcedir/include/linux/string.h; then
646 AC_SUBST(HAVE_STRSCPY, define)
649 AC_SUBST(HAVE_STRSCPY, undef)
652 AC_MSG_CHECKING([kernel source for struct net_generic])
653 if test -f $ksourcedir/include/net/netns/generic.h && \
654 $GREP -q 'struct net_generic' $ksourcedir/include/net/netns/generic.h; then
658 AC_MSG_ERROR([Netns support is required in the Linux kernel tree])
662 dnl Checks for compiler characteristics.
663 dnl Check extra warning flags except
664 dnl -Wconversion -> we need it
665 dnl -Wunreachable-code -> fails with ntoh*
666 dnl -Wpointer-arith -> limbnl uses it
667 dnl -Wsign-conversion -> libmnl
668 if test "x$enable_debug" = "xyes"
670 AX_CFLAGS_GCC_OPTION(-Waggregate-return)
671 AX_CFLAGS_GCC_OPTION(-Wbad-function-cast)
672 AX_CFLAGS_GCC_OPTION(-Wcast-align)
673 AX_CFLAGS_GCC_OPTION(-Wcast-qual)
674 AX_CFLAGS_GCC_OPTION(-Werror)
675 AX_CFLAGS_GCC_OPTION(-Wextra)
676 AX_CFLAGS_GCC_OPTION(-Wfloat-equal)
677 AX_CFLAGS_GCC_OPTION(-Wformat=2)
678 AX_CFLAGS_GCC_OPTION(-Wjump-misses-init)
679 AX_CFLAGS_GCC_OPTION(-Winit-self)
680 AX_CFLAGS_GCC_OPTION(-Winline)
681 AX_CFLAGS_GCC_OPTION(-Wlogical-op)
682 AX_CFLAGS_GCC_OPTION(-Wmissing-declarations)
683 AX_CFLAGS_GCC_OPTION(-Wmissing-format-attribute)
684 AX_CFLAGS_GCC_OPTION(-Wmissing-prototypes)
685 AX_CFLAGS_GCC_OPTION(-Wnested-externs)
686 AX_CFLAGS_GCC_OPTION(-Wno-missing-field-initializers)
687 AX_CFLAGS_GCC_OPTION(-Wold-style-definition)
688 AX_CFLAGS_GCC_OPTION(-Woverlength-strings)
689 AX_CFLAGS_GCC_OPTION(-Wpacked)
690 AX_CFLAGS_GCC_OPTION(-Wredundant-decls)
691 AX_CFLAGS_GCC_OPTION(-Wrwrite-strings)
692 AX_CFLAGS_GCC_OPTION(-Wshadow)
693 AX_CFLAGS_GCC_OPTION(-Wsign-compare)
694 AX_CFLAGS_GCC_OPTION(-Wstrict-prototypes)
695 AX_CFLAGS_GCC_OPTION(-Wswitch-default)
696 AX_CFLAGS_GCC_OPTION(-Wundef)
697 AX_CFLAGS_GCC_OPTION(-Wuninitialized)
698 AX_CFLAGS_GCC_OPTION(-Wunused)
699 AX_CFLAGS_GCC_OPTION(-Wvla)
700 AX_CFLAGS_GCC_OPTION(-Wwrite-strings)
702 dnl Checks for library functions.
705 AC_CONFIG_FILES([Makefile include/libipset/Makefile
706 lib/Makefile lib/libipset.pc src/Makefile utils/Makefile
707 kernel/include/linux/netfilter/ipset/ip_set_compat.h])
712 AC_MSG_RESULT([$PACKAGE userspace tool configuration:])
713 if test "x$bashcompdir" != "x"; then
714 AC_MSG_RESULT([ Bash completion directory: ${bashcompdir}])
716 if test "x$enable_settype_modules" != "xyes"; then
717 AC_MSG_RESULT([ Dynamic module loading: disabled])
719 AC_MSG_RESULT([ Dynamic module loading: enabled])
721 IPSET_ALL_MODULES="`ls ${srcdir}/lib/ipset_*.c|sed -e 's/^.*lib\///' -e 's/\.c$//'`"
722 AC_MSG_RESULT([ Static modules:])
723 if test "x$SETTYPE_MODLIST" = "x"; then
724 for mod in $IPSET_ALL_MODULES; do
725 AC_MSG_RESULT([ ${mod}])
727 AC_MSG_RESULT([ Dynamic modules:])
728 elif echo $SETTYPE_MODLIST | grep "all" >/dev/null; then
729 AC_MSG_RESULT([ Dynamic modules:])
730 for mod in $IPSET_ALL_MODULES; do
731 AC_MSG_RESULT([ ${mod}])
734 for mod in $IPSET_ALL_MODULES; do
735 if echo $SETTYPE_MODLIST | grep -w "$mod" >/dev/null; then
738 AC_MSG_RESULT([ ${mod}])
741 AC_MSG_RESULT([ Dynamic modules:])
742 for mod in $IPSET_ALL_MODULES; do
743 if echo $SETTYPE_MODLIST | grep -w "$mod" >/dev/null; then
744 AC_MSG_RESULT([ ${mod}])