netfilter: xtables: change xt_match.checkentry return type
[linux-2.6.git] / net / ipv4 / netfilter / ipt_ecn.c
index 749de82..d1e234f 100644 (file)
@@ -6,7 +6,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 #include <linux/in.h>
 #include <linux/ip.h>
 #include <net/ip.h>
@@ -67,12 +67,9 @@ static inline bool match_tcp(const struct sk_buff *skb,
        return true;
 }
 
-static bool
-ecn_mt(const struct sk_buff *skb, const struct net_device *in,
-       const struct net_device *out, const struct xt_match *match,
-       const void *matchinfo, int offset, unsigned int protoff, bool *hotdrop)
+static bool ecn_mt(const struct sk_buff *skb, const struct xt_match_param *par)
 {
-       const struct ipt_ecn_info *info = matchinfo;
+       const struct ipt_ecn_info *info = par->matchinfo;
 
        if (info->operation & IPT_ECN_OP_MATCH_IP)
                if (!match_ip(skb, info))
@@ -81,20 +78,17 @@ ecn_mt(const struct sk_buff *skb, const struct net_device *in,
        if (info->operation & (IPT_ECN_OP_MATCH_ECE|IPT_ECN_OP_MATCH_CWR)) {
                if (ip_hdr(skb)->protocol != IPPROTO_TCP)
                        return false;
-               if (!match_tcp(skb, info, hotdrop))
+               if (!match_tcp(skb, info, par->hotdrop))
                        return false;
        }
 
        return true;
 }
 
-static bool
-ecn_mt_check(const char *tablename, const void *ip_void,
-             const struct xt_match *match, void *matchinfo,
-             unsigned int hook_mask)
+static int ecn_mt_check(const struct xt_mtchk_param *par)
 {
-       const struct ipt_ecn_info *info = matchinfo;
-       const struct ipt_ip *ip = ip_void;
+       const struct ipt_ecn_info *info = par->matchinfo;
+       const struct ipt_ip *ip = par->entryinfo;
 
        if (info->operation & IPT_ECN_OP_MATCH_MASK)
                return false;
@@ -102,10 +96,9 @@ ecn_mt_check(const char *tablename, const void *ip_void,
        if (info->invert & IPT_ECN_OP_MATCH_MASK)
                return false;
 
-       if (info->operation & (IPT_ECN_OP_MATCH_ECE|IPT_ECN_OP_MATCH_CWR)
-           && ip->proto != IPPROTO_TCP) {
-               printk(KERN_WARNING "ipt_ecn: can't match TCP bits in rule for"
-                      " non-tcp packets\n");
+       if (info->operation & (IPT_ECN_OP_MATCH_ECE|IPT_ECN_OP_MATCH_CWR) &&
+           ip->proto != IPPROTO_TCP) {
+               pr_info("cannot match TCP bits in rule for non-tcp packets\n");
                return false;
        }
 
@@ -114,7 +107,7 @@ ecn_mt_check(const char *tablename, const void *ip_void,
 
 static struct xt_match ecn_mt_reg __read_mostly = {
        .name           = "ecn",
-       .family         = AF_INET,
+       .family         = NFPROTO_IPV4,
        .match          = ecn_mt,
        .matchsize      = sizeof(struct ipt_ecn_info),
        .checkentry     = ecn_mt_check,