SOURCES (LINUX_2_6): kernel-imq.patch - up to linux-2.6.24-imq.diff

zbyniu zbyniu at pld-linux.org
Tue Feb 26 03:30:20 CET 2008


Author: zbyniu                       Date: Tue Feb 26 02:30:20 2008 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- up to linux-2.6.24-imq.diff

---- Files affected:
SOURCES:
   kernel-imq.patch (1.1.2.1.2.5 -> 1.1.2.1.2.6) 

---- Diffs:

================================================================
Index: SOURCES/kernel-imq.patch
diff -u SOURCES/kernel-imq.patch:1.1.2.1.2.5 SOURCES/kernel-imq.patch:1.1.2.1.2.6
--- SOURCES/kernel-imq.patch:1.1.2.1.2.5	Mon Jan 28 00:55:53 2008
+++ SOURCES/kernel-imq.patch	Tue Feb 26 03:30:14 2008
@@ -1,145 +1,7 @@
-diff -Nru linux-2.6.21.1-orig/drivers/net/Kconfig linux-2.6.21.1/drivers/net/Kconfig
---- linux-2.6.21.1-orig/drivers/net/Kconfig	2007-04-27 21:49:26.000000000 +0000
-+++ linux-2.6.21.1/drivers/net/Kconfig	2007-06-02 21:43:55.000000000 +0000
-@@ -96,6 +96,129 @@
- 	  To compile this driver as a module, choose M here: the module
- 	  will be called eql.  If unsure, say N.
- 
-+config IMQ
-+	tristate "IMQ (intermediate queueing device) support"
-+	depends on NETDEVICES && NETFILTER
-+	---help---
-+	  The IMQ device(s) is used as placeholder for QoS queueing
-+	  disciplines. Every packet entering/leaving the IP stack can be
-+	  directed through the IMQ device where it's enqueued/dequeued to the
-+	  attached qdisc. This allows you to treat network devices as classes
-+	  and distribute bandwidth among them. Iptables is used to specify
-+	  through which IMQ device, if any, packets travel.
-+
-+	  More information at: http://www.linuximq.net/
-+
-+	  To compile this driver as a module, choose M here: the module
-+	  will be called imq.  If unsure, say N.
-+
-+choice
-+	prompt "IMQ behavior (PRE/POSTROUTING)"
-+	depends on IMQ
-+	default IMQ_BEHAVIOR_BA
-+	help
-+
-+		This settings defines how IMQ behaves in respect to its
-+		hooking in PREROUTING and POSTROUTING.
-+
-+		IMQ can work in any of the following ways:
-+
-+		    PREROUTING   |      POSTROUTING
-+		-----------------|-------------------
-+		#1  After NAT    |      After NAT
-+		#2  After NAT    |      Before NAT
-+		#3  Before NAT   |      After NAT
-+		#4  Before NAT   |      Before NAT
-+
-+		The default behavior is to hook before NAT on PREROUTING
-+		and after NAT on POSTROUTING (#3).
-+
-+		This settings are specially usefull when trying to use IMQ
-+		to shape NATed clients.
-+
-+		More information can be found at: www.linuximq.net
-+
-+		If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_AA
-+	bool "IMQ AA"
-+	help
-+		This settings defines how IMQ behaves in respect to its
-+		hooking in PREROUTING and POSTROUTING.
-+
-+		Choosing this option will make IMQ hook like this:
-+
-+		PREROUTING:   After NAT
-+		POSTROUTING:  After NAT
-+
-+		More information can be found at: www.linuximq.net
-+
-+		If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_AB
-+	bool "IMQ AB"
-+	help
-+		This settings defines how IMQ behaves in respect to its
-+		hooking in PREROUTING and POSTROUTING.
-+
-+		Choosing this option will make IMQ hook like this:
-+
-+		PREROUTING:   After NAT
-+		POSTROUTING:  Before NAT
-+
-+		More information can be found at: www.linuximq.net
-+
-+		If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_BA
-+	bool "IMQ BA"
-+	help
-+		This settings defines how IMQ behaves in respect to its
-+		hooking in PREROUTING and POSTROUTING.
-+
-+		Choosing this option will make IMQ hook like this:
-+
-+		PREROUTING:   Before NAT
-+		POSTROUTING:  After NAT
-+
-+		More information can be found at: www.linuximq.net
-+
-+		If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_BB
-+	bool "IMQ BB"
-+	help
-+		This settings defines how IMQ behaves in respect to its
-+		hooking in PREROUTING and POSTROUTING.
-+
-+		Choosing this option will make IMQ hook like this:
-+
-+		PREROUTING:   Before NAT
-+		POSTROUTING:  Before NAT
-+
-+		More information can be found at: www.linuximq.net
-+
-+		If not sure leave the default settings alone.
-+
-+endchoice
-+
-+config IMQ_NUM_DEVS
-+
-+	int "Number of IMQ devices"
-+	range 2 8
-+	depends on IMQ
-+	default "2"
-+	help
-+
-+		This settings defines how many IMQ devices will be 
-+		created.
-+
-+		The default value is 2.
-+
-+		More information can be found at: www.linuximq.net
-+
-+		If not sure leave the default settings alone.
-+
- config TUN
- 	tristate "Universal TUN/TAP device driver support"
- 	select CRC32
-diff -Nru linux-2.6.21.1-orig/drivers/net/Makefile linux-2.6.21.1/drivers/net/Makefile
---- linux-2.6.21.1-orig/drivers/net/Makefile	2007-04-27 21:49:26.000000000 +0000
-+++ linux-2.6.21.1/drivers/net/Makefile	2007-06-02 21:43:55.000000000 +0000
-@@ -0,0 +0,1 @@
-+obj-$(CONFIG_IMQ) += imq.o
-diff -Nru linux-2.6.21.1-orig/drivers/net/imq.c linux-2.6.21.1/drivers/net/imq.c
---- linux-2.6.21.1-orig/drivers/net/imq.c	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.1/drivers/net/imq.c	2007-06-02 21:43:55.000000000 +0000
-@@ -0,0 +1,402 @@
+diff -Naurw 2.6.24/drivers/net/imq.c 2.6.24.imq/drivers/net/imq.c
+--- 2.6.24/drivers/net/imq.c	1969-12-31 21:00:00.000000000 -0300
++++ 2.6.24.imq/drivers/net/imq.c	2008-01-26 14:52:43.000000000 -0300
+@@ -0,0 +1,409 @@
 +/*
 + *             Pseudo-driver for the intermediate queue device.
 + *
@@ -208,7 +70,7 @@
 +
 +extern int qdisc_restart1(struct net_device *dev);
 +
-+static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff **pskb, const struct net_device *indev, const struct net_device *outdev, int (*okfn)(struct sk_buff *));
++static nf_hookfn imq_nf_hook;
 +
 +static struct nf_hook_ops imq_ingress_ipv4 = {
 +	.hook		= imq_nf_hook,
@@ -263,7 +125,7 @@
 +#if defined(CONFIG_IMQ_NUM_DEVS)
 +static unsigned int numdevs = CONFIG_IMQ_NUM_DEVS;
 +#else
-+static unsigned int numdevs = 2;
++static unsigned int numdevs = 16;
 +#endif
 +
 +static struct net_device *imq_devs;
@@ -363,12 +225,12 @@
 +	.outfn = imq_nf_queue,
 +};
 +
-+static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff **pskb,
++static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
 +				const struct net_device *indev,
 +				const struct net_device *outdev,
 +				int (*okfn)(struct sk_buff *))
 +{
-+	if ((*pskb)->imq_flags & IMQ_F_ENQUEUE)
++	if (pskb->imq_flags & IMQ_F_ENQUEUE)
 +		return NF_QUEUE;
 +
 +	return NF_ACCEPT;
@@ -403,7 +265,7 @@
 +err5:
 +	nf_unregister_queue_handler(PF_INET6, &nfqh);
 +err4:
-+	nf_unregister_hook(&imq_egress_ipv6);
++	nf_unregister_hook(&imq_egress_ipv4);
 +#endif
 +err3:
 +	nf_unregister_hook(&imq_ingress_ipv4);
@@ -415,27 +277,26 @@
 +
 +static void __exit imq_unhook(void)
 +{
-+	nf_unregister_hook(&imq_ingress_ipv4);
-+	nf_unregister_hook(&imq_egress_ipv4);
-+	nf_unregister_queue_handler(PF_INET, &nfqh);
 +#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
 +	nf_unregister_hook(&imq_ingress_ipv6);
 +	nf_unregister_hook(&imq_egress_ipv6);
 +	nf_unregister_queue_handler(PF_INET6, &nfqh);
 +#endif
++	nf_unregister_hook(&imq_ingress_ipv4);
++	nf_unregister_hook(&imq_egress_ipv4);
++	nf_unregister_queue_handler(PF_INET, &nfqh);
 +}
 +
 +static int __init imq_dev_init(struct net_device *dev)
 +{
 +	dev->hard_start_xmit    = imq_dev_xmit;
 +	dev->type               = ARPHRD_VOID;
-+	dev->mtu                = 1500;
-+	dev->tx_queue_len       = 30;
++	dev->mtu                = 16000;
++	dev->tx_queue_len       = 11000;
 +	dev->flags              = IFF_NOARP;
-+	dev->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL);
++	dev->priv = kzalloc(sizeof(struct net_device_stats), GFP_KERNEL);
 +	if (dev->priv == NULL)
 +		return -ENOMEM;
-+	memset(dev->priv, 0, sizeof(struct net_device_stats));
 +	dev->get_stats          = imq_get_stats;
 +
 +	return 0;
@@ -446,7 +307,7 @@
 +	kfree(dev->priv);
 +}
 +
-+static int __init imq_init_devs(void)
++static int __init imq_init_devs(struct net *net)
 +{
 +	struct net_device *dev;
 +	int i,j;
@@ -458,19 +319,18 @@
 +		return -EINVAL;
 +	}
 +
-+	imq_devs = kmalloc(sizeof(struct net_device) * numdevs, GFP_KERNEL);
++	imq_devs = kzalloc(sizeof(struct net_device) * numdevs, GFP_KERNEL);
 +	if (!imq_devs)
 +		return -ENOMEM;
-+	memset(imq_devs, 0, sizeof(struct net_device) * numdevs);
 +
 +	/* we start counting at zero */
 +	numdevs--;
 +
 +	for (i = 0, dev = imq_devs; i <= numdevs; i++, dev++) {
-+		
 +		strcpy(dev->name, "imq%d");
 +		dev->init   = imq_dev_init;
 +		dev->uninit = imq_dev_uninit;
++		dev->nd_net = net;
 +
 +		if (register_netdev(dev) < 0)
 +			goto err_register;
@@ -496,12 +356,12 @@
 +	kfree(imq_devs);
 +}
 +
-+static int __init imq_init_module(void)
++static __net_init int imq_init_module(struct net *net)
 +{
 +	int err;
 +
-+	if ((err = imq_init_devs())) {
-+		printk(KERN_ERR "IMQ: Error trying imq_init_devs()\n");
++	if ((err = imq_init_devs(net))) {
++		printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n");
 +		return err;
 +	}
 +	if ((err = imq_init_hooks())) {
@@ -526,25 +386,178 @@
 +	return 0;
 +}
 +
-+static void __exit imq_cleanup_module(void)
++static __net_exit void imq_exit_module(struct net *net)
 +{
 +	imq_unhook();
 +	imq_cleanup_devs();
 +	printk(KERN_INFO "IMQ driver unloaded successfully.\n");
 +}
 +
++static struct pernet_operations __net_initdata imq_net_ops = {
++    .init = imq_init_module,
++    .exit = imq_exit_module,
++};
++ 
++static int __init imq_init(void)
++{
++    return register_pernet_device(&imq_net_ops);
++}
 +
-+module_init(imq_init_module);
-+module_exit(imq_cleanup_module);
++module_init(imq_init);
++//module_exit(imq_cleanup_module);
 +
 +module_param(numdevs, int, 0);
 +MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
 +MODULE_AUTHOR("http://www.linuximq.net");
 +MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
 +MODULE_LICENSE("GPL");
-diff -Nru linux-2.6.21.1-orig/include/linux/imq.h linux-2.6.21.1/include/linux/imq.h
---- linux-2.6.21.1-orig/include/linux/imq.h	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.1/include/linux/imq.h	2007-06-02 21:43:55.000000000 +0000
+diff -Naurw 2.6.24/drivers/net/Kconfig 2.6.24.imq/drivers/net/Kconfig
+--- 2.6.24/drivers/net/Kconfig	2008-01-24 19:58:37.000000000 -0300
++++ 2.6.24.imq/drivers/net/Kconfig	2008-01-26 15:00:11.000000000 -0300
+@@ -112,6 +112,129 @@
+ 	  To compile this driver as a module, choose M here: the module
+ 	  will be called eql.  If unsure, say N.
+ 
++config IMQ
++	tristate "IMQ (intermediate queueing device) support"
++	depends on NETDEVICES && NETFILTER
++	---help---
++	  The IMQ device(s) is used as placeholder for QoS queueing
++	  disciplines. Every packet entering/leaving the IP stack can be
++	  directed through the IMQ device where it's enqueued/dequeued to the
++	  attached qdisc. This allows you to treat network devices as classes
++	  and distribute bandwidth among them. Iptables is used to specify
++	  through which IMQ device, if any, packets travel.
++
++	  More information at: http://www.linuximq.net/
++
++	  To compile this driver as a module, choose M here: the module
++	  will be called imq.  If unsure, say N.
++
++choice
++	prompt "IMQ behavior (PRE/POSTROUTING)"
++	depends on IMQ
++	default IMQ_BEHAVIOR_BB
++	help
++
++		This settings defines how IMQ behaves in respect to its
++		hooking in PREROUTING and POSTROUTING.
++
++		IMQ can work in any of the following ways:
++
++		    PREROUTING   |      POSTROUTING
++		-----------------|-------------------
++		#1  After NAT    |      After NAT
++		#2  After NAT    |      Before NAT
++		#3  Before NAT   |      After NAT
++		#4  Before NAT   |      Before NAT
++
++		The default behavior is to hook before NAT on PREROUTING
++		and after NAT on POSTROUTING (#3).
++
++		This settings are specially usefull when trying to use IMQ
++		to shape NATed clients.
++
++		More information can be found at: www.linuximq.net
++
++		If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AA
++	bool "IMQ AA"
++	help
++		This settings defines how IMQ behaves in respect to its
++		hooking in PREROUTING and POSTROUTING.
++
++		Choosing this option will make IMQ hook like this:
++
++		PREROUTING:   After NAT
++		POSTROUTING:  After NAT
++
++		More information can be found at: www.linuximq.net
++
++		If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AB
++	bool "IMQ AB"
++	help
++		This settings defines how IMQ behaves in respect to its
++		hooking in PREROUTING and POSTROUTING.
++
++		Choosing this option will make IMQ hook like this:
++
++		PREROUTING:   After NAT
++		POSTROUTING:  Before NAT
++
++		More information can be found at: www.linuximq.net
++
++		If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BA
++	bool "IMQ BA"
++	help
++		This settings defines how IMQ behaves in respect to its
++		hooking in PREROUTING and POSTROUTING.
++
++		Choosing this option will make IMQ hook like this:
++
++		PREROUTING:   Before NAT
++		POSTROUTING:  After NAT
++
++		More information can be found at: www.linuximq.net
++
++		If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BB
++	bool "IMQ BB"
++	help
++		This settings defines how IMQ behaves in respect to its
++		hooking in PREROUTING and POSTROUTING.
++
++		Choosing this option will make IMQ hook like this:
++
++		PREROUTING:   Before NAT
++		POSTROUTING:  Before NAT
++
++		More information can be found at: www.linuximq.net
++
++		If not sure leave the default settings alone.
++
++endchoice
++
++config IMQ_NUM_DEVS
++
++	int "Number of IMQ devices"
++	range 2 16
++	depends on IMQ
++	default "16"
++	help
++
++		This settings defines how many IMQ devices will be
++		created.
++
++		The default value is 16.
++
++		More information can be found at: www.linuximq.net
++
++		If not sure leave the default settings alone.
++
+ config TUN
+ 	tristate "Universal TUN/TAP device driver support"
+ 	select CRC32
+diff -Naurw 2.6.24/drivers/net/Makefile 2.6.24.imq/drivers/net/Makefile
+--- 2.6.24/drivers/net/Makefile	2008-01-24 19:58:37.000000000 -0300
++++ 2.6.24.imq/drivers/net/Makefile	2008-01-26 15:00:11.000000000 -0300
+@@ -139,6 +139,7 @@
+ obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o
+ 
+ obj-$(CONFIG_DUMMY) += dummy.o
++obj-$(CONFIG_IMQ) += imq.o
+ obj-$(CONFIG_IFB) += ifb.o
+ obj-$(CONFIG_MACVLAN) += macvlan.o
+ obj-$(CONFIG_DE600) += de600.o
+diff -Naurw 2.6.24/include/linux/imq.h 2.6.24.imq/include/linux/imq.h
+--- 2.6.24/include/linux/imq.h	1969-12-31 21:00:00.000000000 -0300
++++ 2.6.24.imq/include/linux/imq.h	2008-01-26 15:00:11.000000000 -0300
 @@ -0,0 +1,9 @@
 +#ifndef _IMQ_H
 +#define _IMQ_H
@@ -555,9 +568,9 @@
 +#define IMQ_F_ENQUEUE  0x80
 +
 +#endif /* _IMQ_H */
-diff -Nru linux-2.6.21.1-orig/include/linux/netfilter_ipv4/ipt_IMQ.h linux-2.6.21.1/include/linux/netfilter_ipv4/ipt_IMQ.h
---- linux-2.6.21.1-orig/include/linux/netfilter_ipv4/ipt_IMQ.h	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.1/include/linux/netfilter_ipv4/ipt_IMQ.h	2007-06-02 21:43:55.000000000 +0000
+diff -Naurw 2.6.24/include/linux/netfilter_ipv4/ipt_IMQ.h 2.6.24.imq/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- 2.6.24/include/linux/netfilter_ipv4/ipt_IMQ.h	1969-12-31 21:00:00.000000000 -0300
++++ 2.6.24.imq/include/linux/netfilter_ipv4/ipt_IMQ.h	2008-01-26 15:00:11.000000000 -0300
 @@ -0,0 +1,8 @@
 +#ifndef _IPT_IMQ_H
 +#define _IPT_IMQ_H
@@ -567,9 +580,9 @@
 +};
 +
 +#endif /* _IPT_IMQ_H */
-diff -Nru linux-2.6.21.1-orig/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-2.6.21.1/include/linux/netfilter_ipv6/ip6t_IMQ.h
---- linux-2.6.21.1-orig/include/linux/netfilter_ipv6/ip6t_IMQ.h	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.1/include/linux/netfilter_ipv6/ip6t_IMQ.h	2007-06-02 21:43:55.000000000 +0000
+diff -Naurw 2.6.24/include/linux/netfilter_ipv6/ip6t_IMQ.h 2.6.24.imq/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- 2.6.24/include/linux/netfilter_ipv6/ip6t_IMQ.h	1969-12-31 21:00:00.000000000 -0300
++++ 2.6.24.imq/include/linux/netfilter_ipv6/ip6t_IMQ.h	2008-01-26 15:00:11.000000000 -0300
 @@ -0,0 +1,8 @@
 +#ifndef _IP6T_IMQ_H
 +#define _IP6T_IMQ_H
@@ -579,11 +592,11 @@
 +};
 +
 +#endif /* _IP6T_IMQ_H */
-diff -Nru linux-2.6.21.1-orig/include/linux/skbuff.h linux-2.6.21.1/include/linux/skbuff.h
---- linux-2.6.21.1-orig/include/linux/skbuff.h	2007-04-27 21:49:26.000000000 +0000
-+++ linux-2.6.21.1/include/linux/skbuff.h	2007-06-02 21:43:55.000000000 +0000
-@@ -294,6 +294,10 @@
- #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+diff -Naurw 2.6.24/include/linux/skbuff.h 2.6.24.imq/include/linux/skbuff.h
+--- 2.6.24/include/linux/skbuff.h	2008-01-24 19:58:37.000000000 -0300
++++ 2.6.24.imq/include/linux/skbuff.h	2008-01-26 15:00:11.000000000 -0300
+@@ -295,6 +295,10 @@
+ 	struct nf_conntrack	*nfct;
  	struct sk_buff		*nfct_reasm;
  #endif
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
@@ -593,36 +606,47 @@
  #ifdef CONFIG_BRIDGE_NETFILTER
  	struct nf_bridge_info	*nf_bridge;
  #endif
-diff -Nru linux-2.6.21.1-orig/net/ipv4/netfilter/Kconfig linux-2.6.21.1/net/ipv4/netfilter/Kconfig
---- linux-2.6.21.1-orig/net/ipv4/netfilter/Kconfig	2007-04-27 21:49:26.000000000 +0000
-+++ linux-2.6.21.1/net/ipv4/netfilter/Kconfig	2007-06-02 21:43:55.000000000 +0000
-@@ -565,6 +565,17 @@
- 
- 	  To compile it as a module, choose M here.  If unsure, say N.
+@@ -1728,6 +1732,10 @@
+ 	dst->nfct_reasm = src->nfct_reasm;
+ 	nf_conntrack_get_reasm(src->nfct_reasm);
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++	dst->imq_flags = src->imq_flags;
++	dst->nf_info = src->nf_info;
++#endif
+ #ifdef CONFIG_BRIDGE_NETFILTER
+ 	dst->nf_bridge  = src->nf_bridge;
+ 	nf_bridge_get(src->nf_bridge);
+diff -Naurw 2.6.24/net/core/dev.c 2.6.24.imq/net/core/dev.c
+--- 2.6.24/net/core/dev.c	2008-01-24 19:58:37.000000000 -0300
++++ 2.6.24.imq/net/core/dev.c	2008-01-26 15:00:11.000000000 -0300
+@@ -95,6 +95,9 @@
+ #include <net/net_namespace.h>
+ #include <net/sock.h>
+ #include <linux/rtnetlink.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ #include <linux/proc_fs.h>
+ #include <linux/seq_file.h>
+ #include <linux/stat.h>
+@@ -1533,7 +1536,11 @@
+ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+ {
+ 	if (likely(!skb->next)) {
+-		if (!list_empty(&ptype_all))
++		if (!list_empty(&ptype_all)
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++		    && !(skb->imq_flags & IMQ_F_ENQUEUE)
++#endif
++		    )
+ 			dev_queue_xmit_nit(skb, dev);
  
-+config IP_NF_TARGET_IMQ
-+       tristate "IMQ target support"
-+       depends on IP_NF_MANGLE
-+       help
-+         This option adds a `IMQ' target which is used to specify if and
-+         to which IMQ device packets should get enqueued/dequeued.
-+
-+	 For more information visit: http://www.linuximq.net/
-+
-+         To compile it as a module, choose M here.  If unsure, say N.
-+
- config IP_NF_TARGET_TOS
- 	tristate "TOS target support"
- 	depends on IP_NF_MANGLE
-diff -Nru linux-2.6.21.1-orig/net/ipv4/netfilter/Makefile linux-2.6.21.1/net/ipv4/netfilter/Makefile
---- linux-2.6.21.1-orig/net/ipv4/netfilter/Makefile	2007-04-27 21:49:26.000000000 +0000
-+++ linux-2.6.21.1/net/ipv4/netfilter/Makefile	2007-06-02 21:43:55.000000000 +0000
-@@ -0,0 +0,1 @@
-+obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o
-diff -Nru linux-2.6.21.1-orig/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.21.1/net/ipv4/netfilter/ipt_IMQ.c
---- linux-2.6.21.1-orig/net/ipv4/netfilter/ipt_IMQ.c	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.1/net/ipv4/netfilter/ipt_IMQ.c	2007-06-02 21:44:24.000000000 +0000
-@@ -0,0 +1,70 @@
+ 		if (netif_needs_gso(dev, skb)) {
+diff -Naurw 2.6.24/net/ipv4/netfilter/ipt_IMQ.c 2.6.24.imq/net/ipv4/netfilter/ipt_IMQ.c
+--- 2.6.24/net/ipv4/netfilter/ipt_IMQ.c	1969-12-31 21:00:00.000000000 -0300
++++ 2.6.24.imq/net/ipv4/netfilter/ipt_IMQ.c	2008-01-26 15:00:11.000000000 -0300
+@@ -0,0 +1,69 @@
 +/*
 + * This target marks packets to be enqueued to an imq device
 + */
@@ -632,7 +656,7 @@
 +#include <linux/netfilter_ipv4/ipt_IMQ.h>
 +#include <linux/imq.h>
 +
-+static unsigned int imq_target(struct sk_buff **pskb,
++static unsigned int imq_target(struct sk_buff *pskb,
 +			       const struct net_device *in,
 +			       const struct net_device *out,
 +			       unsigned int hooknum,
@@ -641,12 +665,12 @@
 +{
 +	struct ipt_imq_info *mr = (struct ipt_imq_info*)targinfo;
 +
-+	(*pskb)->imq_flags = mr->todev | IMQ_F_ENQUEUE;
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/kernel-imq.patch?r1=1.1.2.1.2.5&r2=1.1.2.1.2.6&f=u



More information about the pld-cvs-commit mailing list