]> granicus.if.org Git - ipset/commitdiff
Add more compatibility checkings to support older kernel releases
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Mon, 10 Nov 2014 18:20:29 +0000 (19:20 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Tue, 18 Nov 2014 06:55:52 +0000 (07:55 +0100)
configure.ac
kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
kernel/net/netfilter/xt_set.c

index 8e5c2704515ff36e52feb208d568441355b58970..985d5924ca5670982b0d574c5428200c6e05f72f 100644 (file)
@@ -200,6 +200,16 @@ else
        AC_SUBST(HAVE_ETHER_ADDR_EQUAL, undef)
 fi
 
+AC_MSG_CHECKING([kernel source for nla_put_be16])
+if test -f $ksourcedir/include/net/netlink.h && \
+   $GREP -q 'nla_put_be16' $ksourcedir/include/net/netlink.h; then
+       AC_MSG_RESULT(yes)
+       AC_SUBST(HAVE_NLA_PUT_BE16, define)
+else
+       AC_MSG_RESULT(no)
+       AC_SUBST(HAVE_NLA_PUT_BE16, undef)
+fi
+
 AC_MSG_CHECKING([kernel source for nla_put_be64])
 if test -f $ksourcedir/include/net/netlink.h && \
    $GREP -q 'nla_put_be64' $ksourcedir/include/net/netlink.h; then
@@ -274,8 +284,8 @@ else
 fi
 
 AC_MSG_CHECKING([kernel source for bool checkentry function prototype])
-if test -f $ksourcedir/net/netfilter/xt_state.c && \
-   $GREP -q 'bool state_mt_check' $ksourcedir/net/netfilter/xt_state.c; then
+if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
+   $GREP -q 'bool .\*checkentry.' $ksourcedir/include/linux/netfilter/x_tables.h; then
        AC_MSG_RESULT(yes)
        AC_SUBST(HAVE_CHECKENTRY_BOOL, define)
 else
@@ -284,8 +294,8 @@ else
 fi
 
 AC_MSG_CHECKING([kernel source for old struct xt_target_param])
-if test -f $ksourcedir/net/netfilter/xt_TCPMSS.c && \
-   $GREP -q 'const struct xt_target_param' $ksourcedir/net/netfilter/xt_TCPMSS.c; then
+if test -f $ksourcedir/include/linux/netfilter/x_tables.h && \
+   $GREP -q '^struct xt_target_param ' $ksourcedir/include/linux/netfilter/x_tables.h; then
        AC_MSG_RESULT(yes)
        AC_SUBST(HAVE_XT_TARGET_PARAM, define)
 else
@@ -333,6 +343,17 @@ else
        AC_SUBST(HAVE_KVFREE, 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 / {for(i=1; i<=5; i++) {getline; print}}' $ksourcedir/include/linux/netfilter/x_tables.h | \
+   $GREP -q 'struct net '; then
+       AC_MSG_RESULT(yes)
+       AC_SUBST(HAVE_XT_MTCHK_PARAM_STRUCT_NET, define)
+else
+       AC_MSG_RESULT(no)
+       AC_SUBST(HAVE_XT_MTCHK_PARAM_STRUCT_NET, undef)
+fi
+
 AC_MSG_CHECKING([kernel source for struct net in the change function of tcf_ematch_ops])
 if test -f $ksourcedir/include/net/pkt_cls.h && \
    $AWK '/^struct tcf_ematch_ops / {for(i=1; i<=5; i++) {getline; print}}' $ksourcedir/include/net/pkt_cls.h | \
index 9809e2a6bab0a086b4eff7ccabee3a4c36ec6b9b..862504bb3e909c0c2038b34a533d102c2ffae8c2 100644 (file)
@@ -23,6 +23,7 @@
 #@HAVE_STRUCT_XT_ACTION_PARAM@ HAVE_STRUCT_XT_ACTION_PARAM
 #@HAVE_VZALLOC@ HAVE_VZALLOC
 #@HAVE_ETHER_ADDR_EQUAL@ HAVE_ETHER_ADDR_EQUAL
+#@HAVE_NLA_PUT_BE16@ HAVE_NLA_PUT_BE16
 #@HAVE_NLA_PUT_BE64@ HAVE_NLA_PUT_BE64
 #@HAVE_NL_INFO_PORTID@ HAVE_NL_INFO_PORTID
 #define HAVE_NETLINK_DUMP_START_ARGS   @HAVE_NETLINK_DUMP_START_ARGS@
@@ -36,6 +37,7 @@
 #@HAVE_USER_NS_IN_STRUCT_NET@ HAVE_USER_NS_IN_STRUCT_NET
 #@HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE@ HAVE_RBTREE_POSTORDER_FOR_EACH_ENTRY_SAFE
 #@HAVE_KVFREE@ HAVE_KVFREE
+#@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
 
@@ -128,7 +130,7 @@ static inline void kvfree(const void *addr)
 }
 #endif
 
-#ifdef NLA_PUT_NET16
+#ifndef HAVE_NLA_PUT_BE16
 static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
 {
        return nla_put(skb, attrtype, sizeof(__be16), &value);
index 7be5c34357a1138b8c3a51fef201241f8199c64e..39eee43ecd6e3874ff5baf2a1837e7723a39b9c5 100644 (file)
@@ -33,13 +33,16 @@ MODULE_ALIAS("ip6t_SET");
 #define CHECK_FAIL(err)        0
 #define        CONST           const
 #define FTYPE          bool
-#define        XT_PAR_NET(par) NULL
 #else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35) */
 #define CHECK_OK       0
 #define CHECK_FAIL(err)        (err)
 #define        CONST
 #define        FTYPE           int
+#endif
+#ifdef HAVE_XT_MTCHK_PARAM_STRUCT_NET
 #define XT_PAR_NET(par)        (par)->net
+#else
+#define        XT_PAR_NET(par) NULL
 #endif
 
 static inline int