]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/netfilter/xt_CONNMARK.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6-omap-h63xx.git] / net / netfilter / xt_CONNMARK.c
index b03ce009d0bf0f267af5e154086c3418cd5989d6..8cc324b159e9b30d55b735eb9ae377df2a0b193e 100644 (file)
@@ -27,13 +27,14 @@ MODULE_AUTHOR("Henrik Nordstrom <hno@marasytems.com>");
 MODULE_DESCRIPTION("IP tables CONNMARK matching module");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("ipt_CONNMARK");
+MODULE_ALIAS("ip6t_CONNMARK");
 
 #include <linux/netfilter/x_tables.h>
 #include <linux/netfilter/xt_CONNMARK.h>
 #include <net/netfilter/nf_conntrack_ecache.h>
 
 static unsigned int
-target(struct sk_buff **pskb,
+target(struct sk_buff *skb,
        const struct net_device *in,
        const struct net_device *out,
        unsigned int hooknum,
@@ -47,28 +48,28 @@ target(struct sk_buff **pskb,
        u_int32_t mark;
        u_int32_t newmark;
 
-       ct = nf_ct_get(*pskb, &ctinfo);
+       ct = nf_ct_get(skb, &ctinfo);
        if (ct) {
                switch(markinfo->mode) {
                case XT_CONNMARK_SET:
                        newmark = (ct->mark & ~markinfo->mask) | markinfo->mark;
                        if (newmark != ct->mark) {
                                ct->mark = newmark;
-                               nf_conntrack_event_cache(IPCT_MARK, *pskb);
+                               nf_conntrack_event_cache(IPCT_MARK, skb);
                        }
                        break;
                case XT_CONNMARK_SAVE:
                        newmark = (ct->mark & ~markinfo->mask) |
-                                 ((*pskb)->mark & markinfo->mask);
+                                 (skb->mark & markinfo->mask);
                        if (ct->mark != newmark) {
                                ct->mark = newmark;
-                               nf_conntrack_event_cache(IPCT_MARK, *pskb);
+                               nf_conntrack_event_cache(IPCT_MARK, skb);
                        }
                        break;
                case XT_CONNMARK_RESTORE:
-                       mark = (*pskb)->mark;
+                       mark = skb->mark;
                        diff = (ct->mark ^ mark) & markinfo->mask;
-                       (*pskb)->mark = mark ^ diff;
+                       skb->mark = mark ^ diff;
                        break;
                }
        }
@@ -76,33 +77,33 @@ target(struct sk_buff **pskb,
        return XT_CONTINUE;
 }
 
-static int
+static bool
 checkentry(const char *tablename,
           const void *entry,
           const struct xt_target *target,
           void *targinfo,
           unsigned int hook_mask)
 {
-       struct xt_connmark_target_info *matchinfo = targinfo;
+       const struct xt_connmark_target_info *matchinfo = targinfo;
 
        if (nf_ct_l3proto_try_module_get(target->family) < 0) {
                printk(KERN_WARNING "can't load conntrack support for "
                                    "proto=%d\n", target->family);
-               return 0;
+               return false;
        }
        if (matchinfo->mode == XT_CONNMARK_RESTORE) {
                if (strcmp(tablename, "mangle") != 0) {
                        printk(KERN_WARNING "CONNMARK: restore can only be "
                               "called from \"mangle\" table, not \"%s\"\n",
                               tablename);
-                       return 0;
+                       return false;
                }
        }
        if (matchinfo->mark > 0xffffffff || matchinfo->mask > 0xffffffff) {
                printk(KERN_WARNING "CONNMARK: Only supports 32bit mark\n");
-               return 0;
+               return false;
        }
-       return 1;
+       return true;
 }
 
 static void
@@ -121,7 +122,7 @@ struct compat_xt_connmark_target_info {
 
 static void compat_from_user(void *dst, void *src)
 {
-       struct compat_xt_connmark_target_info *cm = src;
+       const struct compat_xt_connmark_target_info *cm = src;
        struct xt_connmark_target_info m = {
                .mark   = cm->mark,
                .mask   = cm->mask,
@@ -132,7 +133,7 @@ static void compat_from_user(void *dst, void *src)
 
 static int compat_to_user(void __user *dst, void *src)
 {
-       struct xt_connmark_target_info *m = src;
+       const struct xt_connmark_target_info *m = src;
        struct compat_xt_connmark_target_info cm = {
                .mark   = m->mark,
                .mask   = m->mask,
@@ -142,7 +143,7 @@ static int compat_to_user(void __user *dst, void *src)
 }
 #endif /* CONFIG_COMPAT */
 
-static struct xt_target xt_connmark_target[] = {
+static struct xt_target xt_connmark_target[] __read_mostly = {
        {
                .name           = "CONNMARK",
                .family         = AF_INET,