netfilter: ebt_limit: add CONFIG_COMPAT support
authorFlorian Westphal <fw@strlen.de>
Wed, 27 Jan 2010 13:38:32 +0000 (14:38 +0100)
committerFlorian Westphal <fw@strlen.de>
Tue, 16 Feb 2010 16:27:20 +0000 (17:27 +0100)
ebt_limit structure is larger on 64 bit systems due
to "long" type used in the (kernel-only) data section.

Setting .compatsize is enough in this case, these values
have no meaning in userspace.

Signed-off-by: Florian Westphal <fwestphal@astaro.com>
net/bridge/netfilter/ebt_limit.c

index 9dd16e6b10e724cd360055cdeb06950c6ed41815..7a8182710eb31f534f359d36bffb85aa674efd7d 100644 (file)
@@ -84,6 +84,19 @@ static bool ebt_limit_mt_check(const struct xt_mtchk_param *par)
        return true;
 }
 
+
+#ifdef CONFIG_COMPAT
+/*
+ * no conversion function needed --
+ * only avg/burst have meaningful values in userspace.
+ */
+struct ebt_compat_limit_info {
+       compat_uint_t avg, burst;
+       compat_ulong_t prev;
+       compat_uint_t credit, credit_cap, cost;
+};
+#endif
+
 static struct xt_match ebt_limit_mt_reg __read_mostly = {
        .name           = "limit",
        .revision       = 0,
@@ -91,6 +104,9 @@ static struct xt_match ebt_limit_mt_reg __read_mostly = {
        .match          = ebt_limit_mt,
        .checkentry     = ebt_limit_mt_check,
        .matchsize      = sizeof(struct ebt_limit_info),
+#ifdef CONFIG_COMPAT
+       .compatsize     = sizeof(struct ebt_compat_limit_info),
+#endif
        .me             = THIS_MODULE,
 };