mirror of https://github.com/hak5/openwrt.git
update to imq patch version 2.6.19-imq3 - fixes kernel oops from #1397
SVN-Revision: 6418lede-17.01
parent
295d0a7e82
commit
d064080013
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue