netfilter: change Ebtables function signatures to match Xtables's
[safe/jmp/linux-2.6] / net / bridge / netfilter / ebt_802_3.c
index ef73592..6f1a69c 100644 (file)
@@ -7,13 +7,15 @@
  * May 2003
  *
  */
-
+#include <linux/module.h>
+#include <linux/netfilter/x_tables.h>
 #include <linux/netfilter_bridge/ebtables.h>
 #include <linux/netfilter_bridge/ebt_802_3.h>
-#include <linux/module.h>
 
-static int ebt_filter_802_3(const struct sk_buff *skb, const struct net_device *in,
-   const struct net_device *out, const void *data, unsigned int datalen)
+static bool
+ebt_802_3_mt(const struct sk_buff *skb, const struct net_device *in,
+            const struct net_device *out, const struct xt_match *match,
+            const void *data, int offset, unsigned int protoff, bool *hotdrop)
 {
        const struct ebt_802_3_info *info = data;
        const struct ebt_802_3_hdr *hdr = ebt_802_3_hdr(skb);
@@ -21,40 +23,41 @@ static int ebt_filter_802_3(const struct sk_buff *skb, const struct net_device *
 
        if (info->bitmask & EBT_802_3_SAP) {
                if (FWINV(info->sap != hdr->llc.ui.ssap, EBT_802_3_SAP))
-                               return EBT_NOMATCH;
+                       return false;
                if (FWINV(info->sap != hdr->llc.ui.dsap, EBT_802_3_SAP))
-                               return EBT_NOMATCH;
+                       return false;
        }
 
        if (info->bitmask & EBT_802_3_TYPE) {
                if (!(hdr->llc.ui.dsap == CHECK_TYPE && hdr->llc.ui.ssap == CHECK_TYPE))
-                       return EBT_NOMATCH;
+                       return false;
                if (FWINV(info->type != type, EBT_802_3_TYPE))
-                       return EBT_NOMATCH;
+                       return false;
        }
 
-       return EBT_MATCH;
+       return true;
 }
 
-static struct ebt_match filter_802_3;
-static int ebt_802_3_check(const char *tablename, unsigned int hookmask,
-   const struct ebt_entry *e, void *data, unsigned int datalen)
+static bool
+ebt_802_3_mt_check(const char *table, const void *entry,
+                  const struct xt_match *match, void *data,
+                  unsigned int hook_mask)
 {
        const struct ebt_802_3_info *info = data;
 
-       if (datalen < sizeof(struct ebt_802_3_info))
-               return -EINVAL;
        if (info->bitmask & ~EBT_802_3_MASK || info->invflags & ~EBT_802_3_MASK)
-               return -EINVAL;
+               return false;
 
-       return 0;
+       return true;
 }
 
-static struct ebt_match filter_802_3 =
-{
+static struct ebt_match filter_802_3 __read_mostly = {
        .name           = EBT_802_3_MATCH,
-       .match          = ebt_filter_802_3,
-       .check          = ebt_802_3_check,
+       .revision       = 0,
+       .family         = NFPROTO_BRIDGE,
+       .match          = ebt_802_3_mt,
+       .checkentry     = ebt_802_3_mt_check,
+       .matchsize      = XT_ALIGN(sizeof(struct ebt_802_3_info)),
        .me             = THIS_MODULE,
 };