|
|
@ -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);
|
|
|
|