update to imq patch version 2.6.19-imq3 - fixes kernel oops from #1397

SVN-Revision: 6418
lede-17.01
Felix Fietkau 2007-02-28 00:53:20 +00:00
parent 295d0a7e82
commit d064080013
1 changed files with 436 additions and 412 deletions

View File

@ -1,7 +1,7 @@
diff -urN linux-2.6.19.old/drivers/net/imq.c linux-2.6.19.dev/drivers/net/imq.c diff -urN linux-2.6.19/drivers/net/imq.c linux-2.6.19+imq/drivers/net/imq.c
--- linux-2.6.19.old/drivers/net/imq.c 1970-01-01 01:00:00.000000000 +0100 --- linux-2.6.19/drivers/net/imq.c 1970-01-01 09:30:00.000000000 +0930
+++ linux-2.6.19.dev/drivers/net/imq.c 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/drivers/net/imq.c 2006-12-05 23:01:02.000000000 +1030
@@ -0,0 +1,400 @@ @@ -0,0 +1,402 @@
+/* +/*
+ * Pseudo-driver for the intermediate queue device. + * Pseudo-driver for the intermediate queue device.
+ * + *
@ -53,7 +53,6 @@ diff -urN linux-2.6.19.old/drivers/net/imq.c linux-2.6.19.dev/drivers/net/imq.c
+ * More info at: http://www.linuximq.net/ (Andre Correa) + * More info at: http://www.linuximq.net/ (Andre Correa)
+ */ + */
+ +
+#include <linux/autoconf.h>
+#include <linux/module.h> +#include <linux/module.h>
+#include <linux/kernel.h> +#include <linux/kernel.h>
+#include <linux/moduleparam.h> +#include <linux/moduleparam.h>
@ -69,6 +68,8 @@ diff -urN linux-2.6.19.old/drivers/net/imq.c linux-2.6.19.dev/drivers/net/imq.c
+#include <linux/imq.h> +#include <linux/imq.h>
+#include <net/pkt_sched.h> +#include <net/pkt_sched.h>
+ +
+extern int qdisc_restart1(struct net_device *dev);
+
+static nf_hookfn imq_nf_hook; +static nf_hookfn imq_nf_hook;
+ +
+static struct nf_hook_ops imq_ingress_ipv4 = { +static struct nf_hook_ops imq_ingress_ipv4 = {
@ -208,7 +209,8 @@ diff -urN linux-2.6.19.old/drivers/net/imq.c linux-2.6.19.dev/drivers/net/imq.c
+ if (spin_is_locked(&dev->_xmit_lock)) + if (spin_is_locked(&dev->_xmit_lock))
+ netif_schedule(dev); + netif_schedule(dev);
+ else + else
+ qdisc_run(dev); + while (!netif_queue_stopped(dev) && qdisc_restart1(dev) < 0)
+ /* NOTHING */;
+ +
+ spin_unlock_bh(&dev->queue_lock); + spin_unlock_bh(&dev->queue_lock);
+ +
@ -402,9 +404,9 @@ diff -urN linux-2.6.19.old/drivers/net/imq.c linux-2.6.19.dev/drivers/net/imq.c
+MODULE_AUTHOR("http://www.linuximq.net"); +MODULE_AUTHOR("http://www.linuximq.net");
+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); +MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
diff -urN linux-2.6.19.old/drivers/net/Kconfig linux-2.6.19.dev/drivers/net/Kconfig diff -urN linux-2.6.19/drivers/net/Kconfig linux-2.6.19+imq/drivers/net/Kconfig
--- linux-2.6.19.old/drivers/net/Kconfig 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/drivers/net/Kconfig 2006-12-01 14:05:30.000000000 +1030
+++ linux-2.6.19.dev/drivers/net/Kconfig 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/drivers/net/Kconfig 2006-12-05 23:03:52.000000000 +1030
@@ -96,6 +96,129 @@ @@ -96,6 +96,129 @@
To compile this driver as a module, choose M here: the module To compile this driver as a module, choose M here: the module
will be called eql. If unsure, say N. will be called eql. If unsure, say N.
@ -413,12 +415,12 @@ diff -urN linux-2.6.19.old/drivers/net/Kconfig linux-2.6.19.dev/drivers/net/Kcon
+ tristate "IMQ (intermediate queueing device) support" + tristate "IMQ (intermediate queueing device) support"
+ depends on NETDEVICES && NETFILTER + depends on NETDEVICES && NETFILTER
+ ---help--- + ---help---
+ The IMQ device(s) is used as placeholder for QoS queueing disciplines. + The IMQ device(s) is used as placeholder for QoS queueing
+ Every packet entering/leaving the IP stack can be directed through + disciplines. Every packet entering/leaving the IP stack can be
+ the IMQ device where it's enqueued/dequeued to the attached qdisc. + directed through the IMQ device where it's enqueued/dequeued to the
+ This allows you to treat network devices as classes and distribute + attached qdisc. This allows you to treat network devices as classes
+ bandwidth among them. Iptables is used to specify through which IMQ + and distribute bandwidth among them. Iptables is used to specify
+ device, if any, packets travel. + through which IMQ device, if any, packets travel.
+ +
+ More information at: http://www.linuximq.net/ + More information at: http://www.linuximq.net/
+ +
@ -535,9 +537,9 @@ diff -urN linux-2.6.19.old/drivers/net/Kconfig linux-2.6.19.dev/drivers/net/Kcon
config TUN config TUN
tristate "Universal TUN/TAP device driver support" tristate "Universal TUN/TAP device driver support"
select CRC32 select CRC32
diff -urN linux-2.6.19.old/drivers/net/Makefile linux-2.6.19.dev/drivers/net/Makefile diff -urN linux-2.6.19/drivers/net/Makefile linux-2.6.19+imq/drivers/net/Makefile
--- linux-2.6.19.old/drivers/net/Makefile 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/drivers/net/Makefile 2006-12-01 14:05:30.000000000 +1030
+++ linux-2.6.19.dev/drivers/net/Makefile 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/drivers/net/Makefile 2006-12-04 12:41:01.000000000 +1030
@@ -124,6 +124,7 @@ @@ -124,6 +124,7 @@
obj-$(CONFIG_SLHC) += slhc.o obj-$(CONFIG_SLHC) += slhc.o
@ -546,9 +548,9 @@ diff -urN linux-2.6.19.old/drivers/net/Makefile linux-2.6.19.dev/drivers/net/Mak
obj-$(CONFIG_IFB) += ifb.o obj-$(CONFIG_IFB) += ifb.o
obj-$(CONFIG_DE600) += de600.o obj-$(CONFIG_DE600) += de600.o
obj-$(CONFIG_DE620) += de620.o obj-$(CONFIG_DE620) += de620.o
diff -urN linux-2.6.19.old/include/linux/imq.h linux-2.6.19.dev/include/linux/imq.h diff -urN linux-2.6.19/include/linux/imq.h linux-2.6.19+imq/include/linux/imq.h
--- linux-2.6.19.old/include/linux/imq.h 1970-01-01 01:00:00.000000000 +0100 --- linux-2.6.19/include/linux/imq.h 1970-01-01 09:30:00.000000000 +0930
+++ linux-2.6.19.dev/include/linux/imq.h 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/include/linux/imq.h 2006-12-04 12:41:01.000000000 +1030
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
+#ifndef _IMQ_H +#ifndef _IMQ_H
+#define _IMQ_H +#define _IMQ_H
@ -559,9 +561,9 @@ diff -urN linux-2.6.19.old/include/linux/imq.h linux-2.6.19.dev/include/linux/im
+#define IMQ_F_ENQUEUE 0x80 +#define IMQ_F_ENQUEUE 0x80
+ +
+#endif /* _IMQ_H */ +#endif /* _IMQ_H */
diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_IMQ.h linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_IMQ.h diff -urN linux-2.6.19/include/linux/netfilter_ipv4/ipt_IMQ.h linux-2.6.19+imq/include/linux/netfilter_ipv4/ipt_IMQ.h
--- linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 01:00:00.000000000 +0100 --- linux-2.6.19/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 09:30:00.000000000 +0930
+++ linux-2.6.19.dev/include/linux/netfilter_ipv4/ipt_IMQ.h 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/include/linux/netfilter_ipv4/ipt_IMQ.h 2006-12-05 23:04:22.000000000 +1030
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
+#ifndef _IPT_IMQ_H +#ifndef _IPT_IMQ_H
+#define _IPT_IMQ_H +#define _IPT_IMQ_H
@ -571,9 +573,9 @@ diff -urN linux-2.6.19.old/include/linux/netfilter_ipv4/ipt_IMQ.h linux-2.6.19.d
+}; +};
+ +
+#endif /* _IPT_IMQ_H */ +#endif /* _IPT_IMQ_H */
diff -urN linux-2.6.19.old/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-2.6.19.dev/include/linux/netfilter_ipv6/ip6t_IMQ.h diff -urN linux-2.6.19/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-2.6.19+imq/include/linux/netfilter_ipv6/ip6t_IMQ.h
--- linux-2.6.19.old/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 01:00:00.000000000 +0100 --- linux-2.6.19/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 09:30:00.000000000 +0930
+++ linux-2.6.19.dev/include/linux/netfilter_ipv6/ip6t_IMQ.h 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2006-12-05 23:04:32.000000000 +1030
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
+#ifndef _IP6T_IMQ_H +#ifndef _IP6T_IMQ_H
+#define _IP6T_IMQ_H +#define _IP6T_IMQ_H
@ -583,9 +585,9 @@ diff -urN linux-2.6.19.old/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-2.6.19.
+}; +};
+ +
+#endif /* _IP6T_IMQ_H */ +#endif /* _IP6T_IMQ_H */
diff -urN linux-2.6.19.old/include/linux/skbuff.h linux-2.6.19.dev/include/linux/skbuff.h diff -urN linux-2.6.19/include/linux/skbuff.h linux-2.6.19+imq/include/linux/skbuff.h
--- linux-2.6.19.old/include/linux/skbuff.h 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/include/linux/skbuff.h 2006-12-01 14:05:44.000000000 +1030
+++ linux-2.6.19.dev/include/linux/skbuff.h 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/include/linux/skbuff.h 2006-12-05 23:05:06.000000000 +1030
@@ -292,6 +292,10 @@ @@ -292,6 +292,10 @@
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
struct sk_buff *nfct_reasm; struct sk_buff *nfct_reasm;
@ -597,9 +599,35 @@ diff -urN linux-2.6.19.old/include/linux/skbuff.h linux-2.6.19.dev/include/linux
#ifdef CONFIG_BRIDGE_NETFILTER #ifdef CONFIG_BRIDGE_NETFILTER
struct nf_bridge_info *nf_bridge; struct nf_bridge_info *nf_bridge;
#endif #endif
diff -urN linux-2.6.19.old/net/core/skbuff.c linux-2.6.19.dev/net/core/skbuff.c diff -urN linux-2.6.19/net/core/dev.c linux-2.6.19+imq/net/core/dev.c
--- linux-2.6.19.old/net/core/skbuff.c 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/net/core/dev.c 2006-12-01 14:05:45.000000000 +1030
+++ linux-2.6.19.dev/net/core/skbuff.c 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/net/core/dev.c 2006-12-05 23:05:40.000000000 +1030
@@ -94,6 +94,9 @@
#include <linux/skbuff.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>
@@ -1344,7 +1347,11 @@
int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
if (likely(!skb->next)) {
- if (netdev_nit)
+ if (netdev_nit
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ && !(skb->imq_flags & IMQ_F_ENQUEUE)
+#endif
+ )
dev_queue_xmit_nit(skb, dev);
if (netif_needs_gso(dev, skb)) {
diff -urN linux-2.6.19/net/core/skbuff.c linux-2.6.19+imq/net/core/skbuff.c
--- linux-2.6.19/net/core/skbuff.c 2006-12-01 14:05:45.000000000 +1030
+++ linux-2.6.19+imq/net/core/skbuff.c 2006-12-04 12:41:01.000000000 +1030
@@ -482,6 +482,10 @@ @@ -482,6 +482,10 @@
C(nfct_reasm); C(nfct_reasm);
nf_conntrack_get_reasm(skb->nfct_reasm); nf_conntrack_get_reasm(skb->nfct_reasm);
@ -622,10 +650,10 @@ diff -urN linux-2.6.19.old/net/core/skbuff.c linux-2.6.19.dev/net/core/skbuff.c
#ifdef CONFIG_BRIDGE_NETFILTER #ifdef CONFIG_BRIDGE_NETFILTER
new->nf_bridge = old->nf_bridge; new->nf_bridge = old->nf_bridge;
nf_bridge_get(old->nf_bridge); nf_bridge_get(old->nf_bridge);
diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.19.dev/net/ipv4/netfilter/ipt_IMQ.c diff -urN linux-2.6.19/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.19+imq/net/ipv4/netfilter/ipt_IMQ.c
--- linux-2.6.19.old/net/ipv4/netfilter/ipt_IMQ.c 1970-01-01 01:00:00.000000000 +0100 --- linux-2.6.19/net/ipv4/netfilter/ipt_IMQ.c 1970-01-01 09:30:00.000000000 +0930
+++ linux-2.6.19.dev/net/ipv4/netfilter/ipt_IMQ.c 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19.2/net/ipv4/netfilter/ipt_IMQ.c 2007-01-25 09:59:34.000000000 +0100
@@ -0,0 +1,77 @@ @@ -0,0 +1,71 @@
+/* +/*
+ * This target marks packets to be enqueued to an imq device + * This target marks packets to be enqueued to an imq device
+ */ + */
@ -659,13 +687,6 @@ diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.19.dev/net/ipv
+ +
+ mr = (struct ipt_imq_info*)targinfo; + mr = (struct ipt_imq_info*)targinfo;
+ +
+ if (strcmp(tablename, "mangle") != 0) {
+ printk(KERN_WARNING
+ "IMQ: IMQ can only be called from \"mangle\" table, not \"%s\"\n",
+ tablename);
+ return 0;
+ }
+
+ if (mr->todev > IMQ_MAX_DEVS) { + if (mr->todev > IMQ_MAX_DEVS) {
+ printk(KERN_WARNING + printk(KERN_WARNING
+ "IMQ: invalid device specified, highest is %u\n", + "IMQ: invalid device specified, highest is %u\n",
@ -681,7 +702,8 @@ diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.19.dev/net/ipv
+ .target = imq_target, + .target = imq_target,
+ .targetsize = sizeof(struct ipt_imq_info), + .targetsize = sizeof(struct ipt_imq_info),
+ .checkentry = imq_checkentry, + .checkentry = imq_checkentry,
+ .me = THIS_MODULE + .me = THIS_MODULE,
+ .table = "mangle"
+}; +};
+ +
+static int __init init(void) +static int __init init(void)
@ -703,10 +725,10 @@ diff -urN linux-2.6.19.old/net/ipv4/netfilter/ipt_IMQ.c linux-2.6.19.dev/net/ipv
+MODULE_AUTHOR("http://www.linuximq.net"); +MODULE_AUTHOR("http://www.linuximq.net");
+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); +MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
diff -urN linux-2.6.19.old/net/ipv4/netfilter/Kconfig linux-2.6.19.dev/net/ipv4/netfilter/Kconfig diff -urN linux-2.6.19/net/ipv4/netfilter/Kconfig linux-2.6.19+imq/net/ipv4/netfilter/Kconfig
--- linux-2.6.19.old/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:47.000000000 +0100 --- linux-2.6.19/net/ipv4/netfilter/Kconfig 2006-12-01 14:05:45.000000000 +1030
+++ linux-2.6.19.dev/net/ipv4/netfilter/Kconfig 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/net/ipv4/netfilter/Kconfig 2006-12-04 12:41:01.000000000 +1030
@@ -390,6 +390,17 @@ @@ -533,6 +533,17 @@
To compile it as a module, choose M here. If unsure, say N. To compile it as a module, choose M here. If unsure, say N.
@ -721,13 +743,13 @@ diff -urN linux-2.6.19.old/net/ipv4/netfilter/Kconfig linux-2.6.19.dev/net/ipv4/
+ +
+ To compile it as a module, choose M here. If unsure, say N. + To compile it as a module, choose M here. If unsure, say N.
+ +
config IP_NF_TARGET_LOG config IP_NF_TARGET_TOS
tristate "LOG target support" tristate "TOS target support"
depends on IP_NF_IPTABLES depends on IP_NF_MANGLE
diff -urN linux-2.6.19.old/net/ipv4/netfilter/Makefile linux-2.6.19.dev/net/ipv4/netfilter/Makefile diff -urN linux-2.6.19/net/ipv4/netfilter/Makefile linux-2.6.19+imq/net/ipv4/netfilter/Makefile
--- linux-2.6.19.old/net/ipv4/netfilter/Makefile 2006-12-14 03:13:47.000000000 +0100 --- linux-2.6.19/net/ipv4/netfilter/Makefile 2006-12-01 14:05:45.000000000 +1030
+++ linux-2.6.19.dev/net/ipv4/netfilter/Makefile 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/net/ipv4/netfilter/Makefile 2006-12-04 12:41:01.000000000 +1030
@@ -71,6 +71,7 @@ @@ -67,6 +67,7 @@
obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o
obj-$(CONFIG_IP_NF_TARGET_TOS) += ipt_TOS.o obj-$(CONFIG_IP_NF_TARGET_TOS) += ipt_TOS.o
obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o
@ -735,10 +757,10 @@ diff -urN linux-2.6.19.old/net/ipv4/netfilter/Makefile linux-2.6.19.dev/net/ipv4
obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o
obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o
obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o
diff -urN linux-2.6.19.old/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19.dev/net/ipv6/netfilter/ip6t_IMQ.c diff -urN linux-2.6.19/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19+imq/net/ipv6/netfilter/ip6t_IMQ.c
--- linux-2.6.19.old/net/ipv6/netfilter/ip6t_IMQ.c 1970-01-01 01:00:00.000000000 +0100 --- linux-2.6.19/net/ipv6/netfilter/ip6t_IMQ.c 1970-01-01 09:30:00.000000000 +0930
+++ linux-2.6.19.dev/net/ipv6/netfilter/ip6t_IMQ.c 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19.2/net/ipv6/netfilter/ip6t_IMQ.c 2007-01-25 10:06:41.000000000 +0100
@@ -0,0 +1,77 @@ @@ -0,0 +1,71 @@
+/* +/*
+ * This target marks packets to be enqueued to an imq device + * This target marks packets to be enqueued to an imq device
+ */ + */
@ -763,7 +785,7 @@ diff -urN linux-2.6.19.old/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19.dev/net/ip
+} +}
+ +
+static int imq_checkentry(const char *tablename, +static int imq_checkentry(const char *tablename,
+ const void *e, + const void *entry,
+ const struct xt_target *target, + const struct xt_target *target,
+ void *targinfo, + void *targinfo,
+ unsigned int hook_mask) + unsigned int hook_mask)
@ -772,13 +794,6 @@ diff -urN linux-2.6.19.old/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19.dev/net/ip
+ +
+ mr = (struct ip6t_imq_info*)targinfo; + mr = (struct ip6t_imq_info*)targinfo;
+ +
+ if (strcmp(tablename, "mangle") != 0) {
+ printk(KERN_WARNING
+ "IMQ: IMQ can only be called from \"mangle\" table, not \"%s\"\n",
+ tablename);
+ return 0;
+ }
+
+ if (mr->todev > IMQ_MAX_DEVS) { + if (mr->todev > IMQ_MAX_DEVS) {
+ printk(KERN_WARNING + printk(KERN_WARNING
+ "IMQ: invalid device specified, highest is %u\n", + "IMQ: invalid device specified, highest is %u\n",
@ -793,6 +808,7 @@ diff -urN linux-2.6.19.old/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19.dev/net/ip
+ .name = "IMQ", + .name = "IMQ",
+ .target = imq_target, + .target = imq_target,
+ .targetsize = sizeof(struct ip6t_imq_info), + .targetsize = sizeof(struct ip6t_imq_info),
+ .table = "mangle",
+ .checkentry = imq_checkentry, + .checkentry = imq_checkentry,
+ .me = THIS_MODULE + .me = THIS_MODULE
+}; +};
@ -816,10 +832,10 @@ diff -urN linux-2.6.19.old/net/ipv6/netfilter/ip6t_IMQ.c linux-2.6.19.dev/net/ip
+MODULE_AUTHOR("http://www.linuximq.net"); +MODULE_AUTHOR("http://www.linuximq.net");
+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); +MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
diff -urN linux-2.6.19.old/net/ipv6/netfilter/Kconfig linux-2.6.19.dev/net/ipv6/netfilter/Kconfig diff -urN linux-2.6.19/net/ipv6/netfilter/Kconfig linux-2.6.19+imq/net/ipv6/netfilter/Kconfig
--- linux-2.6.19.old/net/ipv6/netfilter/Kconfig 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/net/ipv6/netfilter/Kconfig 2006-12-01 14:05:46.000000000 +1030
+++ linux-2.6.19.dev/net/ipv6/netfilter/Kconfig 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/net/ipv6/netfilter/Kconfig 2006-12-04 12:41:01.000000000 +1030
@@ -134,6 +134,15 @@ @@ -163,6 +163,15 @@
To compile it as a module, choose M here. If unsure, say N. To compile it as a module, choose M here. If unsure, say N.
@ -832,37 +848,45 @@ diff -urN linux-2.6.19.old/net/ipv6/netfilter/Kconfig linux-2.6.19.dev/net/ipv6/
+ +
+ To compile it as a module, choose M here. If unsure, say N. + To compile it as a module, choose M here. If unsure, say N.
+ +
config IP6_NF_TARGET_LOG config IP6_NF_TARGET_HL
tristate "LOG target support" tristate 'HL (hoplimit) target support'
depends on IP6_NF_FILTER depends on IP6_NF_MANGLE
diff -urN linux-2.6.19.old/net/ipv6/netfilter/Makefile linux-2.6.19.dev/net/ipv6/netfilter/Makefile diff -urN linux-2.6.19/net/ipv6/netfilter/Makefile linux-2.6.19+imq/net/ipv6/netfilter/Makefile
--- linux-2.6.19.old/net/ipv6/netfilter/Makefile 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/net/ipv6/netfilter/Makefile 2006-12-01 14:05:46.000000000 +1030
+++ linux-2.6.19.dev/net/ipv6/netfilter/Makefile 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/net/ipv6/netfilter/Makefile 2006-12-04 12:41:01.000000000 +1030
@@ -4,6 +4,7 @@ @@ -13,6 +13,7 @@
obj-$(CONFIG_IP6_NF_MATCH_OWNER) += ip6t_owner.o
# Link order matters here. obj-$(CONFIG_IP6_NF_FILTER) += ip6table_filter.o
obj-$(CONFIG_IP6_NF_IPTABLES) += ip6_tables.o obj-$(CONFIG_IP6_NF_MANGLE) += ip6table_mangle.o
+obj-$(CONFIG_IP6_NF_TARGET_IMQ) += ip6t_IMQ.o +obj-$(CONFIG_IP6_NF_TARGET_IMQ) += ip6t_IMQ.o
obj-$(CONFIG_IP6_NF_MATCH_RT) += ip6t_rt.o obj-$(CONFIG_IP6_NF_TARGET_HL) += ip6t_HL.o
obj-$(CONFIG_IP6_NF_MATCH_OPTS) += ip6t_hbh.o obj-$(CONFIG_IP6_NF_QUEUE) += ip6_queue.o
obj-$(CONFIG_IP6_NF_MATCH_IPV6HEADER) += ip6t_ipv6header.o obj-$(CONFIG_IP6_NF_TARGET_LOG) += ip6t_LOG.o
diff -urN linux-2.6.19.old/net/sched/sch_generic.c linux-2.6.19.dev/net/sched/sch_generic.c diff -urN linux-2.6.19/net/sched/sch_generic.c linux-2.6.19+imq/net/sched/sch_generic.c
--- linux-2.6.19.old/net/sched/sch_generic.c 2006-11-29 22:57:37.000000000 +0100 --- linux-2.6.19/net/sched/sch_generic.c 2006-12-01 14:05:46.000000000 +1030
+++ linux-2.6.19.dev/net/sched/sch_generic.c 2006-12-14 03:13:47.000000000 +0100 +++ linux-2.6.19+imq/net/sched/sch_generic.c 2006-12-05 23:08:54.000000000 +1030
@@ -28,6 +28,9 @@ @@ -87,7 +87,6 @@
#include <linux/netdevice.h>
#include <linux/skbuff.h> NOTE: Called under dev->queue_lock with locally disabled BH.
#include <linux/rtnetlink.h> */
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -
+#include <linux/imq.h> static inline int qdisc_restart(struct net_device *dev)
+#endif {
#include <linux/init.h> struct Qdisc *q = dev->qdisc;
#include <linux/rcupdate.h> @@ -181,6 +180,11 @@
#include <linux/list.h> return q->q.qlen;
@@ -615,5 +618,6 @@ }
EXPORT_SYMBOL(qdisc_alloc);
EXPORT_SYMBOL(qdisc_destroy); +int qdisc_restart1(struct net_device *dev)
+{
+ return qdisc_restart(dev);
+}
+
void __qdisc_run(struct net_device *dev)
{
if (unlikely(dev->qdisc == &noop_qdisc))
@@ -617,3 +621,4 @@
EXPORT_SYMBOL(qdisc_reset); EXPORT_SYMBOL(qdisc_reset);
+EXPORT_SYMBOL(__qdisc_run);
EXPORT_SYMBOL(qdisc_lock_tree); EXPORT_SYMBOL(qdisc_lock_tree);
EXPORT_SYMBOL(qdisc_unlock_tree); EXPORT_SYMBOL(qdisc_unlock_tree);
+EXPORT_SYMBOL(qdisc_restart1);