]> err.no Git - linux-2.6/commitdiff
[NETFILTER]: ipt_ULOG: add compat conversion functions
authorPatrick McHardy <kaber@trash.net>
Fri, 13 Apr 2007 05:17:05 +0000 (22:17 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Thu, 26 Apr 2007 05:29:02 +0000 (22:29 -0700)
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/netfilter/ipt_ULOG.c

index d26bbd2daaa937e51efe740fdf0cff1f3c088136..a2bcba70af5006273c114b373812f607be871822 100644 (file)
@@ -349,12 +349,52 @@ static int ipt_ulog_checkentry(const char *tablename,
        return 1;
 }
 
+#ifdef CONFIG_COMPAT
+struct compat_ipt_ulog_info {
+       compat_uint_t   nl_group;
+       compat_size_t   copy_range;
+       compat_size_t   qthreshold;
+       char            prefix[ULOG_PREFIX_LEN];
+};
+
+static void compat_from_user(void *dst, void *src)
+{
+       struct compat_ipt_ulog_info *cl = src;
+       struct ipt_ulog_info l = {
+               .nl_group       = cl->nl_group,
+               .copy_range     = cl->copy_range,
+               .qthreshold     = cl->qthreshold,
+       };
+
+       memcpy(l.prefix, cl->prefix, sizeof(l.prefix));
+       memcpy(dst, &l, sizeof(l));
+}
+
+static int compat_to_user(void __user *dst, void *src)
+{
+       struct ipt_ulog_info *l = src;
+       struct compat_ipt_ulog_info cl = {
+               .nl_group       = l->nl_group,
+               .copy_range     = l->copy_range,
+               .qthreshold     = l->qthreshold,
+       };
+
+       memcpy(cl.prefix, l->prefix, sizeof(cl.prefix));
+       return copy_to_user(dst, &cl, sizeof(cl)) ? -EFAULT : 0;
+}
+#endif /* CONFIG_COMPAT */
+
 static struct xt_target ipt_ulog_reg = {
        .name           = "ULOG",
        .family         = AF_INET,
        .target         = ipt_ulog_target,
        .targetsize     = sizeof(struct ipt_ulog_info),
        .checkentry     = ipt_ulog_checkentry,
+#ifdef CONFIG_COMPAT
+       .compatsize     = sizeof(struct compat_ipt_ulog_info),
+       .compat_from_user = compat_from_user,
+       .compat_to_user = compat_to_user,
+#endif
        .me             = THIS_MODULE,
 };