From: Changli Gao on 11 Jul 2010 08:50 On Sun, Jul 11, 2010 at 8:27 PM, Michael S. Tsirkin <mst(a)redhat.com> wrote: > On Fri, Jul 09, 2010 at 11:56:26AM +0200, Jan Engelhardt wrote: >> >> On Friday 2010-07-09 00:29, Michael S. Tsirkin wrote: >> > >> > include/linux/netfilter_ipv4/ipt_CHECKSUM.h | � 18 +++++++ >> > net/ipv4/netfilter/Kconfig � � � � � � � � �| � 16 ++++++ >> > net/ipv4/netfilter/Makefile � � � � � � � � | � �1 + >> > net/ipv4/netfilter/ipt_CHECKSUM.c � � � � � | � 72 +++++++++++++++++++++++++++ >> >> New modules should use xt. > > I tried moving the module to xt_CHECKSUM but now > � � � �iptables -A POSTROUTING -t mangle -p udp --dport 68 -j CHECKSUM --checksum-fill > does not to load the module. > It seems that xt_request_find_target in x_tables uses the prefix 'ip' for a module. > What am I missing? > You should add MODULE_ALIAS clause, i.e. MODULE_ALIAS("ipt_CHECKSUM"); -- Regards, Changli Gao(xiaosuo(a)gmail.com) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Michael S. Tsirkin on 11 Jul 2010 09:30 On Sun, Jul 11, 2010 at 08:45:01PM +0800, Changli Gao wrote: > On Sun, Jul 11, 2010 at 8:27 PM, Michael S. Tsirkin <mst(a)redhat.com> wrote: > > On Fri, Jul 09, 2010 at 11:56:26AM +0200, Jan Engelhardt wrote: > >> > >> On Friday 2010-07-09 00:29, Michael S. Tsirkin wrote: > >> > > >> > include/linux/netfilter_ipv4/ipt_CHECKSUM.h | � 18 +++++++ > >> > net/ipv4/netfilter/Kconfig � � � � � � � � �| � 16 ++++++ > >> > net/ipv4/netfilter/Makefile � � � � � � � � | � �1 + > >> > net/ipv4/netfilter/ipt_CHECKSUM.c � � � � � | � 72 +++++++++++++++++++++++++++ > >> > >> New modules should use xt. > > > > I tried moving the module to xt_CHECKSUM but now > > � � � �iptables -A POSTROUTING -t mangle -p udp --dport 68 -j CHECKSUM --checksum-fill > > does not to load the module. > > It seems that xt_request_find_target in x_tables uses the prefix 'ip' for a module. > > What am I missing? > > > > You should add MODULE_ALIAS clause, i.e. > > MODULE_ALIAS("ipt_CHECKSUM"); This worked, thanks! > -- > Regards, > Changli Gao(xiaosuo(a)gmail.com) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Michael S. Tsirkin on 11 Jul 2010 09:30 On Sun, Jul 11, 2010 at 02:45:49PM +0200, Jan Engelhardt wrote: > > On Sunday 2010-07-11 14:27, Michael S. Tsirkin wrote: > >> > > >> > include/linux/netfilter_ipv4/ipt_CHECKSUM.h | 18 +++++++ > >> > net/ipv4/netfilter/Kconfig | 16 ++++++ > >> > net/ipv4/netfilter/Makefile | 1 + > >> > net/ipv4/netfilter/ipt_CHECKSUM.c | 72 +++++++++++++++++++++++++++ > >> > >> New modules should use xt. > > > >I tried moving the module to xt_CHECKSUM but now > > iptables -A POSTROUTING -t mangle -p udp --dport 68 -j CHECKSUM --checksum-fill > >does not to load the module. > >It seems that xt_request_find_target in x_tables uses the prefix 'ip' for a module. > >What am I missing? > > MODULE_ALIAS like the others have. Worked for me, thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Patrick McHardy on 15 Jul 2010 05:40 Am 11.07.2010 17:06, schrieb Michael S. Tsirkin: > +#ifndef _IPT_CHECKSUM_TARGET_H > +#define _IPT_CHECKSUM_TARGET_H > + > +#define XT_CHECKSUM_OP_FILL 0x01 /* fill in checksum in IP header */ > + > +struct xt_CHECKSUM_info { > + u_int8_t operation; /* bitset of operations */ Please use __u8 in public header files. > +}; > + > +#endif /* _IPT_CHECKSUM_TARGET_H */ > diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig > index 8593a77..1cf4852 100644 > --- a/net/netfilter/Kconfig > +++ b/net/netfilter/Kconfig > @@ -294,7 +294,7 @@ endif # NF_CONNTRACK > config NETFILTER_TPROXY > tristate "Transparent proxying support (EXPERIMENTAL)" > depends on EXPERIMENTAL > - depends on IP_NF_MANGLE > + depends on IP_NF_MANGLE || IP6_NF_MANGLE This does not seem to belong into this patch. > depends on NETFILTER_ADVANCED > help > This option enables transparent proxying support, that is, > @@ -347,6 +347,21 @@ config NETFILTER_XT_CONNMARK > > comment "Xtables targets" > > +config NETFILTER_XT_TARGET_CHECKSUM > + tristate "CHECKSUM target support" > + depends on NETFILTER_ADVANCED > + ---help--- > + This option adds a `CHECKSUM' target, which can be used in the iptables mangle > + table. You should add a dependency on the mangle table then. > + > + You can use this target to compute and fill in the checksum in > + a packet that lacks a checksum. This is particularly useful, > + if you need to work around old applications such as dhcp clients, > + that do not work well with checksum offloads, but don't want to disable > + checksum offload in your device. > + > + To compile it as a module, choose M here. If unsure, say N. > + > config NETFILTER_XT_TARGET_CLASSIFY > tristate '"CLASSIFY" target support' > depends on NETFILTER_ADVANCED > diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile > index 14e3a8f..8eb541d 100644 > --- a/net/netfilter/Makefile > +++ b/net/netfilter/Makefile > @@ -45,6 +45,7 @@ obj-$(CONFIG_NETFILTER_XT_MARK) += xt_mark.o > obj-$(CONFIG_NETFILTER_XT_CONNMARK) += xt_connmark.o > > # targets > +obj-$(CONFIG_NETFILTER_XT_TARGET_CHECKSUM) += xt_CHECKSUM.o > obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIFY) += xt_CLASSIFY.o > obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o > obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o > diff --git a/net/netfilter/xt_CHECKSUM.c b/net/netfilter/xt_CHECKSUM.c > new file mode 100644 > index 0000000..0fee1a7 > --- /dev/null > +++ b/net/netfilter/xt_CHECKSUM.c > @@ -0,0 +1,72 @@ > +/* iptables module for the packet checksum mangling > + * > + * (C) 2002 by Harald Welte <laforge(a)netfilter.org> > + * (C) 2010 Red Hat, Inc. > + * > + * Author: Michael S. Tsirkin <mst(a)redhat.com> > + * > + * This program is free software; you can redistribute it and/or modify > + * 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> Do you really need in.h? > +#include <linux/module.h> > +#include <linux/skbuff.h> > +#include <linux/netdevice.h> > + > +#include <linux/netfilter/x_tables.h> > +#include <linux/netfilter/xt_CHECKSUM.h> > + > +MODULE_LICENSE("GPL"); > +MODULE_AUTHOR("Michael S. Tsirkin <mst(a)redhat.com>"); > +MODULE_DESCRIPTION("Xtables: checksum modification"); > +MODULE_ALIAS("ipt_CHECKSUM"); > +MODULE_ALIAS("ip6t_CHECKSUM"); > + > +static unsigned int > +checksum_tg(struct sk_buff *skb, const struct xt_action_param *par) > +{ > + if (skb->ip_summed == CHECKSUM_PARTIAL) > + skb_checksum_help(skb); > + > + return XT_CONTINUE; > +} > + > +static int checksum_tg_check(const struct xt_tgchk_param *par) > +{ > + const struct xt_CHECKSUM_info *einfo = par->targinfo; > + > + if (einfo->operation & ~XT_CHECKSUM_OP_FILL) { > + pr_info("unsupported CHECKSUM operation %x\n", einfo->operation); > + return -EINVAL; > + } > + if (!einfo->operation) { > + pr_info("no CHECKSUM operation enabled\n"); > + return -EINVAL; > + } > + return 0; > +} > + > +static struct xt_target checksum_tg_reg __read_mostly = { > + .name = "CHECKSUM", > + .family = NFPROTO_UNSPEC, > + .target = checksum_tg, > + .targetsize = sizeof(struct xt_CHECKSUM_info), > + .table = "mangle", > + .checkentry = checksum_tg_check, > + .me = THIS_MODULE, > +}; > + > +static int __init checksum_tg_init(void) > +{ > + return xt_register_target(&checksum_tg_reg); > +} > + > +static void __exit checksum_tg_exit(void) > +{ > + xt_unregister_target(&checksum_tg_reg); > +} > + > +module_init(checksum_tg_init); > +module_exit(checksum_tg_exit); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Patrick McHardy on 15 Jul 2010 11:20 Am 11.07.2010 12:47, schrieb Michael S. Tsirkin: > On Fri, Jul 09, 2010 at 05:17:36PM +0200, Patrick McHardy wrote: >> Am 09.07.2010 00:29, schrieb Michael S. Tsirkin: >>> This adds a `CHECKSUM' target, which can be used in the iptables mangle >>> table. >>> >>> You can use this target to compute and fill in the checksum in >>> an IP packet that lacks a checksum. This is particularly useful, >>> if you need to work around old applications such as dhcp clients, >>> that do not work well with checksum offloads, but don't want to >>> disable checksum offload in your device. >>> >>> The problem happens in the field with virtualized applications. >>> For reference, see Red Hat bz 605555, as well as >>> http://www.spinics.net/lists/kvm/msg37660.html >>> >>> Typical expected use (helps old dhclient binary running in a VM): >>> iptables -A POSTROUTING -t mangle -p udp --dport 68 -j CHECKSUM >>> --checksum-fill >> >> I'm not sure this is something we want to merge upstream and >> support indefinitely. Dave suggested this as a temporary >> out-of-tree workaround until the majority of guest dhcp clients >> are fixed. Has anything changed that makes this course of >> action impractical? > > If I understand what Dave said correctly, it's up to you ... > > The arguments for putting this upstream are: > > Given the track record, I wouldn't hope for quick fix in the majority of > guest dhcp clients, unfortunately :(. We are talking years here. > Even after that, one of the uses of virtualization is > to keep old guests running. So yes, I think we'll > keep using work-arounds for this for a very long time. > > Further, since we have to add the module and we have to teach management > to program it, it will be much less painful for everyone > involved if we can put the code upstream, rather than forking > management code. Fair enough, its simple enough that I don't expect much maintenance overhead. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 4 Prev: pm: Add runtime PM statistics to sysfs Next: [PATCH] mmc: MMC 4.4 DDR support |