summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac20
-rw-r--r--kernel/include/linux/netfilter/ipset/ip_set_compat.h.in12
2 files changed, 32 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index a2694bb..69a97a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -429,6 +429,26 @@ else
AC_SUBST(HAVE_KVFREE, undef)
fi
+AC_MSG_CHECKING([kernel source for bitmap_zalloc])
+if test -f $ksourcedir/include/linux/bitmap.h && \
+ $GREP -q 'bitmap_zalloc' $ksourcedir/include/linux/bitmap.h; then
+ AC_MSG_RESULT(yes)
+ AC_SUBST(HAVE_BITMAP_ZALLOC, define)
+else
+ AC_MSG_RESULT(no)
+ AC_SUBST(HAVE_BITMAP_ZALLOC, undef)
+fi
+
+AC_MSG_CHECKING([kernel source for bitmap_zero])
+if test -f $ksourcedir/include/linux/bitmap.h && \
+ $GREP -q 'bitmap_zero' $ksourcedir/include/linux/bitmap.h; then
+ AC_MSG_RESULT(yes)
+ AC_SUBST(HAVE_BITMAP_ZERO, define)
+else
+ AC_MSG_RESULT(no)
+ AC_SUBST(HAVE_BITMAP_ZERO, undef)
+fi
+
AC_MSG_CHECKING([kernel source for struct net in struct xt_mtchk_param])
if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
$AWK '/^struct xt_mtchk_param /,/^}/' $ksourcedir/include/linux/netfilter/x_tables.h | \
diff --git a/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in b/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
index d71c3fd..57c9996 100644
--- a/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
+++ b/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
@@ -26,6 +26,8 @@
#@HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE@ HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE
#@HAVE_KVCALLOC@ HAVE_KVCALLOC
#@HAVE_KVFREE@ HAVE_KVFREE
+#@HAVE_BITMAP_ZALLOC@ HAVE_BITMAP_ZALLOC
+#@HAVE_BITMAP_ZERO@ HAVE_BITMAP_ZERO
#@HAVE_XT_MTCHK_PARAM_STRUCT_NET@ HAVE_XT_MTCHK_PARAM_STRUCT_NET
#@HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET@ HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET
#@HAVE_TCF_EMATCH_STRUCT_NET@ HAVE_TCF_EMATCH_STRUCT_NET
@@ -253,6 +255,16 @@ static inline void kvfree(const void *addr)
}
#endif
+#ifndef HAVE_BITMAP_ZALLOC
+#define bitmap_zalloc(nbits, flags) \
+ kmalloc(BITS_TO_LONGS(nbits) * sizeof(unsigned long), (flags) | __GFP_ZERO)
+#endif
+
+#ifndef HAVE_BITMAP_ZERO
+#define bitmap_zero(dst, nbits) \
+ memset(dst, 0, BITS_TO_LONGS(nbits) * sizeof(unsigned long))
+#endif
+
#ifndef HAVE_NLA_PUT_BE16
static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
{