update imq patches for 2.6.26, 2.6.27, 2.6.28, 2.6.29 and 2.6.30
SVN-Revision: 15655
This commit is contained in:
parent
1b3f1495ac
commit
8964c9037b
22 changed files with 3153 additions and 1858 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -157,7 +157,7 @@ config NF_CONNTRACK_FTP
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
config NF_CONNTRACK_H323
|
||||
tristate "H.323 protocol support"
|
||||
|
@ -9,7 +9,7 @@
|
|||
depends on NETFILTER_ADVANCED
|
||||
help
|
||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||
@@ -435,7 +435,7 @@ config NETFILTER_XT_TARGET_CONNSECMARK
|
||||
@@ -447,7 +447,7 @@
|
||||
|
||||
config NETFILTER_XT_TARGET_TCPMSS
|
||||
tristate '"TCPMSS" target support'
|
||||
|
|
|
@ -294,7 +294,7 @@
|
|||
+#endif /* _NETFILTER_MIME_H */
|
||||
--- a/net/ipv4/netfilter/Makefile
|
||||
+++ b/net/ipv4/netfilter/Makefile
|
||||
@@ -23,6 +23,7 @@ obj-$(CONFIG_NF_NAT_AMANDA) += nf_nat_am
|
||||
@@ -23,6 +23,7 @@
|
||||
obj-$(CONFIG_NF_NAT_FTP) += nf_nat_ftp.o
|
||||
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
|
||||
obj-$(CONFIG_NF_NAT_IRC) += nf_nat_irc.o
|
||||
|
@ -304,7 +304,7 @@
|
|||
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -270,6 +270,16 @@ config NF_CONNTRACK_TFTP
|
||||
@@ -270,6 +270,16 @@
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
|
@ -323,7 +323,7 @@
|
|||
depends on NF_CONNTRACK
|
||||
--- a/net/netfilter/Makefile
|
||||
+++ b/net/netfilter/Makefile
|
||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_NF_CONNTRACK_PPTP) += nf_co
|
||||
@@ -33,6 +33,7 @@
|
||||
obj-$(CONFIG_NF_CONNTRACK_SANE) += nf_conntrack_sane.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_SIP) += nf_conntrack_sip.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_TFTP) += nf_conntrack_tftp.o
|
||||
|
@ -333,7 +333,7 @@
|
|||
obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o
|
||||
--- a/net/ipv4/netfilter/Kconfig
|
||||
+++ b/net/ipv4/netfilter/Kconfig
|
||||
@@ -282,6 +282,11 @@ config NF_NAT_IRC
|
||||
@@ -271,6 +271,11 @@
|
||||
depends on IP_NF_IPTABLES && NF_CONNTRACK && NF_NAT
|
||||
default NF_NAT && NF_CONNTRACK_IRC
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,75 +0,0 @@
|
|||
--- a/drivers/net/imq.c
|
||||
+++ b/drivers/net/imq.c
|
||||
@@ -178,10 +178,11 @@ static int imq_nf_queue(struct nf_queue_
|
||||
struct sk_buff *skb2 = NULL;
|
||||
struct Qdisc *q;
|
||||
unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK;
|
||||
- int ret = -1;
|
||||
+ struct netdev_queue *txq;
|
||||
+ int ret = -EINVAL;
|
||||
|
||||
if (index > numdevs)
|
||||
- return -1;
|
||||
+ return ret;
|
||||
|
||||
/* check for imq device by index from cache */
|
||||
dev = imq_devs_cache[index];
|
||||
@@ -194,7 +195,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
if (!dev) {
|
||||
/* not found ?!*/
|
||||
BUG();
|
||||
- return -1;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
imq_devs_cache[index] = dev;
|
||||
@@ -212,17 +213,19 @@ static int imq_nf_queue(struct nf_queue_
|
||||
skb2 = entry->skb;
|
||||
entry->skb = skb_clone(entry->skb, GFP_ATOMIC);
|
||||
if (!entry->skb)
|
||||
- return -1;
|
||||
+ return -ENOMEM;
|
||||
}
|
||||
entry->skb->nf_queue_entry = entry;
|
||||
|
||||
dev->stats.rx_bytes += entry->skb->len;
|
||||
dev->stats.rx_packets++;
|
||||
|
||||
- spin_lock_bh(&dev->queue_lock);
|
||||
- q = dev->qdisc;
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ __netif_tx_lock_bh(txq);
|
||||
+ q = txq->qdisc;
|
||||
+
|
||||
if (q->enqueue) {
|
||||
- q->enqueue(skb_get(entry->skb), q);
|
||||
+ qdisc_enqueue_root(skb_get(entry->skb), q);
|
||||
if (skb_shared(entry->skb)) {
|
||||
entry->skb->destructor = imq_skb_destructor;
|
||||
kfree_skb(entry->skb);
|
||||
@@ -231,7 +234,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
}
|
||||
if (!test_and_set_bit(1, &priv->tasklet_pending))
|
||||
tasklet_schedule(&priv->tasklet);
|
||||
- spin_unlock_bh(&dev->queue_lock);
|
||||
+ __netif_tx_unlock_bh(txq);
|
||||
|
||||
if (skb2)
|
||||
kfree_skb(ret ? entry->skb : skb2);
|
||||
@@ -248,11 +251,13 @@ static void qdisc_run_tasklet(unsigned l
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)arg;
|
||||
struct imq_private *priv = netdev_priv(dev);
|
||||
+ struct netdev_queue *txq;
|
||||
|
||||
- spin_lock(&dev->queue_lock);
|
||||
- qdisc_run(dev);
|
||||
+ netif_tx_lock(dev);
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ qdisc_run(txq->qdisc);
|
||||
clear_bit(1, &priv->tasklet_pending);
|
||||
- spin_unlock(&dev->queue_lock);
|
||||
+ netif_tx_unlock(dev);
|
||||
}
|
||||
|
||||
static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -165,7 +165,7 @@ config NF_CONNTRACK_FTP
|
||||
@@ -165,7 +165,7 @@
|
||||
|
||||
config NF_CONNTRACK_H323
|
||||
tristate "H.323 protocol support"
|
||||
|
@ -9,7 +9,7 @@
|
|||
depends on NETFILTER_ADVANCED
|
||||
help
|
||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||
@@ -443,7 +443,7 @@ config NETFILTER_XT_TARGET_CONNSECMARK
|
||||
@@ -455,7 +455,7 @@
|
||||
|
||||
config NETFILTER_XT_TARGET_TCPMSS
|
||||
tristate '"TCPMSS" target support'
|
||||
|
|
|
@ -294,7 +294,7 @@
|
|||
+#endif /* _NETFILTER_MIME_H */
|
||||
--- a/net/ipv4/netfilter/Makefile
|
||||
+++ b/net/ipv4/netfilter/Makefile
|
||||
@@ -23,6 +23,7 @@ obj-$(CONFIG_NF_NAT_AMANDA) += nf_nat_am
|
||||
@@ -23,6 +23,7 @@
|
||||
obj-$(CONFIG_NF_NAT_FTP) += nf_nat_ftp.o
|
||||
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
|
||||
obj-$(CONFIG_NF_NAT_IRC) += nf_nat_irc.o
|
||||
|
@ -304,7 +304,7 @@
|
|||
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -278,6 +278,16 @@ config NF_CONNTRACK_TFTP
|
||||
@@ -278,6 +278,16 @@
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
|
@ -323,7 +323,7 @@
|
|||
depends on NF_CONNTRACK
|
||||
--- a/net/netfilter/Makefile
|
||||
+++ b/net/netfilter/Makefile
|
||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_NF_CONNTRACK_PPTP) += nf_co
|
||||
@@ -33,6 +33,7 @@
|
||||
obj-$(CONFIG_NF_CONNTRACK_SANE) += nf_conntrack_sane.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_SIP) += nf_conntrack_sip.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_TFTP) += nf_conntrack_tftp.o
|
||||
|
@ -333,7 +333,7 @@
|
|||
obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o
|
||||
--- a/net/ipv4/netfilter/Kconfig
|
||||
+++ b/net/ipv4/netfilter/Kconfig
|
||||
@@ -281,6 +281,11 @@ config NF_NAT_IRC
|
||||
@@ -270,6 +270,11 @@
|
||||
depends on IP_NF_IPTABLES && NF_CONNTRACK && NF_NAT
|
||||
default NF_NAT && NF_CONNTRACK_IRC
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,114 +0,0 @@
|
|||
--- a/drivers/net/imq.c
|
||||
+++ b/drivers/net/imq.c
|
||||
@@ -178,10 +178,11 @@ static int imq_nf_queue(struct nf_queue_
|
||||
struct sk_buff *skb2 = NULL;
|
||||
struct Qdisc *q;
|
||||
unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK;
|
||||
- int ret = -1;
|
||||
+ struct netdev_queue *txq;
|
||||
+ int ret = -EINVAL;
|
||||
|
||||
if (index > numdevs)
|
||||
- return -1;
|
||||
+ return ret;
|
||||
|
||||
/* check for imq device by index from cache */
|
||||
dev = imq_devs_cache[index];
|
||||
@@ -194,7 +195,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
if (!dev) {
|
||||
/* not found ?!*/
|
||||
BUG();
|
||||
- return -1;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
imq_devs_cache[index] = dev;
|
||||
@@ -212,17 +213,19 @@ static int imq_nf_queue(struct nf_queue_
|
||||
skb2 = entry->skb;
|
||||
entry->skb = skb_clone(entry->skb, GFP_ATOMIC);
|
||||
if (!entry->skb)
|
||||
- return -1;
|
||||
+ return -ENOMEM;
|
||||
}
|
||||
entry->skb->nf_queue_entry = entry;
|
||||
|
||||
dev->stats.rx_bytes += entry->skb->len;
|
||||
dev->stats.rx_packets++;
|
||||
|
||||
- spin_lock_bh(&dev->queue_lock);
|
||||
- q = dev->qdisc;
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ __netif_tx_lock_bh(txq);
|
||||
+ q = txq->qdisc;
|
||||
+
|
||||
if (q->enqueue) {
|
||||
- q->enqueue(skb_get(entry->skb), q);
|
||||
+ qdisc_enqueue_root(skb_get(entry->skb), q);
|
||||
if (skb_shared(entry->skb)) {
|
||||
entry->skb->destructor = imq_skb_destructor;
|
||||
kfree_skb(entry->skb);
|
||||
@@ -231,7 +234,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
}
|
||||
if (!test_and_set_bit(1, &priv->tasklet_pending))
|
||||
tasklet_schedule(&priv->tasklet);
|
||||
- spin_unlock_bh(&dev->queue_lock);
|
||||
+ __netif_tx_unlock_bh(txq);
|
||||
|
||||
if (skb2)
|
||||
kfree_skb(ret ? entry->skb : skb2);
|
||||
@@ -248,11 +251,13 @@ static void qdisc_run_tasklet(unsigned l
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)arg;
|
||||
struct imq_private *priv = netdev_priv(dev);
|
||||
+ struct netdev_queue *txq;
|
||||
|
||||
- spin_lock(&dev->queue_lock);
|
||||
- qdisc_run(dev);
|
||||
+ netif_tx_lock(dev);
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ qdisc_run(txq->qdisc);
|
||||
clear_bit(1, &priv->tasklet_pending);
|
||||
- spin_unlock(&dev->queue_lock);
|
||||
+ netif_tx_unlock(dev);
|
||||
}
|
||||
|
||||
static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
|
||||
--- a/net/ipv4/netfilter/ipt_IMQ.c
|
||||
+++ b/net/ipv4/netfilter/ipt_IMQ.c
|
||||
@@ -7,29 +7,23 @@
|
||||
#include <linux/netfilter_ipv4/ipt_IMQ.h>
|
||||
#include <linux/imq.h>
|
||||
|
||||
-static unsigned int imq_target(struct sk_buff *pskb,
|
||||
- const struct net_device *in,
|
||||
- const struct net_device *out,
|
||||
- unsigned int hooknum,
|
||||
- const struct xt_target *target,
|
||||
- const void *targinfo)
|
||||
+static unsigned int
|
||||
+imq_target(struct sk_buff *pskb,
|
||||
+ const struct xt_target_param *par)
|
||||
{
|
||||
- struct ipt_imq_info *mr = (struct ipt_imq_info *)targinfo;
|
||||
+ struct ipt_imq_info *mr = (struct ipt_imq_info *)par->targinfo;
|
||||
|
||||
pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE;
|
||||
|
||||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
-static bool imq_checkentry(const char *tablename,
|
||||
- const void *e,
|
||||
- const struct xt_target *target,
|
||||
- void *targinfo,
|
||||
- unsigned int hook_mask)
|
||||
+static bool
|
||||
+imq_checkentry(const struct xt_tgchk_param *par)
|
||||
{
|
||||
struct ipt_imq_info *mr;
|
||||
|
||||
- mr = (struct ipt_imq_info *)targinfo;
|
||||
+ mr = (struct ipt_imq_info *)par->targinfo;
|
||||
|
||||
if (mr->todev > IMQ_MAX_DEVS) {
|
||||
printk(KERN_WARNING
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -160,7 +160,6 @@ config NF_CONNTRACK_FTP
|
||||
@@ -160,7 +160,6 @@
|
||||
|
||||
config NF_CONNTRACK_H323
|
||||
tristate "H.323 protocol support"
|
||||
|
@ -8,7 +8,7 @@
|
|||
depends on NETFILTER_ADVANCED
|
||||
help
|
||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||
@@ -455,7 +454,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
||||
@@ -467,7 +466,6 @@
|
||||
|
||||
config NETFILTER_XT_TARGET_TCPMSS
|
||||
tristate '"TCPMSS" target support'
|
||||
|
|
|
@ -294,7 +294,7 @@
|
|||
+#endif /* _NETFILTER_MIME_H */
|
||||
--- a/net/ipv4/netfilter/Makefile
|
||||
+++ b/net/ipv4/netfilter/Makefile
|
||||
@@ -26,6 +26,7 @@ obj-$(CONFIG_NF_NAT_AMANDA) += nf_nat_am
|
||||
@@ -26,6 +26,7 @@
|
||||
obj-$(CONFIG_NF_NAT_FTP) += nf_nat_ftp.o
|
||||
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
|
||||
obj-$(CONFIG_NF_NAT_IRC) += nf_nat_irc.o
|
||||
|
@ -304,7 +304,7 @@
|
|||
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -267,6 +267,16 @@ config NF_CONNTRACK_TFTP
|
||||
@@ -267,6 +267,16 @@
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
|
@ -323,7 +323,7 @@
|
|||
select NETFILTER_NETLINK
|
||||
--- a/net/netfilter/Makefile
|
||||
+++ b/net/netfilter/Makefile
|
||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_NF_CONNTRACK_PPTP) += nf_co
|
||||
@@ -33,6 +33,7 @@
|
||||
obj-$(CONFIG_NF_CONNTRACK_SANE) += nf_conntrack_sane.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_SIP) += nf_conntrack_sip.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_TFTP) += nf_conntrack_tftp.o
|
||||
|
@ -333,7 +333,7 @@
|
|||
obj-$(CONFIG_NETFILTER_TPROXY) += nf_tproxy_core.o
|
||||
--- a/net/ipv4/netfilter/Kconfig
|
||||
+++ b/net/ipv4/netfilter/Kconfig
|
||||
@@ -268,6 +268,11 @@ config NF_NAT_IRC
|
||||
@@ -257,6 +257,11 @@
|
||||
depends on NF_CONNTRACK && NF_NAT
|
||||
default NF_NAT && NF_CONNTRACK_IRC
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -1256,9 +1256,12 @@ static inline int skb_network_offset(con
|
||||
@@ -1270,9 +1270,12 @@
|
||||
*
|
||||
* Various parts of the networking layer expect at least 16 bytes of
|
||||
* headroom, you should not reduce this.
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,114 +0,0 @@
|
|||
--- a/drivers/net/imq.c
|
||||
+++ b/drivers/net/imq.c
|
||||
@@ -178,10 +178,11 @@ static int imq_nf_queue(struct nf_queue_
|
||||
struct sk_buff *skb2 = NULL;
|
||||
struct Qdisc *q;
|
||||
unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK;
|
||||
- int ret = -1;
|
||||
+ struct netdev_queue *txq;
|
||||
+ int ret = -EINVAL;
|
||||
|
||||
if (index > numdevs)
|
||||
- return -1;
|
||||
+ return ret;
|
||||
|
||||
/* check for imq device by index from cache */
|
||||
dev = imq_devs_cache[index];
|
||||
@@ -194,7 +195,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
if (!dev) {
|
||||
/* not found ?!*/
|
||||
BUG();
|
||||
- return -1;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
imq_devs_cache[index] = dev;
|
||||
@@ -212,17 +213,19 @@ static int imq_nf_queue(struct nf_queue_
|
||||
skb2 = entry->skb;
|
||||
entry->skb = skb_clone(entry->skb, GFP_ATOMIC);
|
||||
if (!entry->skb)
|
||||
- return -1;
|
||||
+ return -ENOMEM;
|
||||
}
|
||||
entry->skb->nf_queue_entry = entry;
|
||||
|
||||
dev->stats.rx_bytes += entry->skb->len;
|
||||
dev->stats.rx_packets++;
|
||||
|
||||
- spin_lock_bh(&dev->queue_lock);
|
||||
- q = dev->qdisc;
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ __netif_tx_lock_bh(txq);
|
||||
+ q = txq->qdisc;
|
||||
+
|
||||
if (q->enqueue) {
|
||||
- q->enqueue(skb_get(entry->skb), q);
|
||||
+ qdisc_enqueue_root(skb_get(entry->skb), q);
|
||||
if (skb_shared(entry->skb)) {
|
||||
entry->skb->destructor = imq_skb_destructor;
|
||||
kfree_skb(entry->skb);
|
||||
@@ -231,7 +234,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
}
|
||||
if (!test_and_set_bit(1, &priv->tasklet_pending))
|
||||
tasklet_schedule(&priv->tasklet);
|
||||
- spin_unlock_bh(&dev->queue_lock);
|
||||
+ __netif_tx_unlock_bh(txq);
|
||||
|
||||
if (skb2)
|
||||
kfree_skb(ret ? entry->skb : skb2);
|
||||
@@ -248,11 +251,13 @@ static void qdisc_run_tasklet(unsigned l
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)arg;
|
||||
struct imq_private *priv = netdev_priv(dev);
|
||||
+ struct netdev_queue *txq;
|
||||
|
||||
- spin_lock(&dev->queue_lock);
|
||||
- qdisc_run(dev);
|
||||
+ netif_tx_lock(dev);
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ qdisc_run(txq->qdisc);
|
||||
clear_bit(1, &priv->tasklet_pending);
|
||||
- spin_unlock(&dev->queue_lock);
|
||||
+ netif_tx_unlock(dev);
|
||||
}
|
||||
|
||||
static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
|
||||
--- a/net/ipv4/netfilter/ipt_IMQ.c
|
||||
+++ b/net/ipv4/netfilter/ipt_IMQ.c
|
||||
@@ -7,29 +7,23 @@
|
||||
#include <linux/netfilter_ipv4/ipt_IMQ.h>
|
||||
#include <linux/imq.h>
|
||||
|
||||
-static unsigned int imq_target(struct sk_buff *pskb,
|
||||
- const struct net_device *in,
|
||||
- const struct net_device *out,
|
||||
- unsigned int hooknum,
|
||||
- const struct xt_target *target,
|
||||
- const void *targinfo)
|
||||
+static unsigned int
|
||||
+imq_target(struct sk_buff *pskb,
|
||||
+ const struct xt_target_param *par)
|
||||
{
|
||||
- struct ipt_imq_info *mr = (struct ipt_imq_info *)targinfo;
|
||||
+ struct ipt_imq_info *mr = (struct ipt_imq_info *)par->targinfo;
|
||||
|
||||
pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE;
|
||||
|
||||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
-static bool imq_checkentry(const char *tablename,
|
||||
- const void *e,
|
||||
- const struct xt_target *target,
|
||||
- void *targinfo,
|
||||
- unsigned int hook_mask)
|
||||
+static bool
|
||||
+imq_checkentry(const struct xt_tgchk_param *par)
|
||||
{
|
||||
struct ipt_imq_info *mr;
|
||||
|
||||
- mr = (struct ipt_imq_info *)targinfo;
|
||||
+ mr = (struct ipt_imq_info *)par->targinfo;
|
||||
|
||||
if (mr->todev > IMQ_MAX_DEVS) {
|
||||
printk(KERN_WARNING
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -160,7 +160,6 @@ config NF_CONNTRACK_FTP
|
||||
@@ -160,7 +160,6 @@
|
||||
|
||||
config NF_CONNTRACK_H323
|
||||
tristate "H.323 protocol support"
|
||||
|
@ -8,7 +8,7 @@
|
|||
depends on NETFILTER_ADVANCED
|
||||
help
|
||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||
@@ -454,7 +453,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
||||
@@ -466,7 +465,6 @@
|
||||
|
||||
config NETFILTER_XT_TARGET_TCPMSS
|
||||
tristate '"TCPMSS" target support'
|
||||
|
|
|
@ -294,7 +294,7 @@
|
|||
+#endif /* _NETFILTER_MIME_H */
|
||||
--- a/net/ipv4/netfilter/Makefile
|
||||
+++ b/net/ipv4/netfilter/Makefile
|
||||
@@ -26,6 +26,7 @@ obj-$(CONFIG_NF_NAT_AMANDA) += nf_nat_am
|
||||
@@ -26,6 +26,7 @@
|
||||
obj-$(CONFIG_NF_NAT_FTP) += nf_nat_ftp.o
|
||||
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
|
||||
obj-$(CONFIG_NF_NAT_IRC) += nf_nat_irc.o
|
||||
|
@ -304,7 +304,7 @@
|
|||
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -267,6 +267,16 @@ config NF_CONNTRACK_TFTP
|
||||
@@ -267,6 +267,16 @@
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
|
@ -323,7 +323,7 @@
|
|||
select NETFILTER_NETLINK
|
||||
--- a/net/netfilter/Makefile
|
||||
+++ b/net/netfilter/Makefile
|
||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_NF_CONNTRACK_PPTP) += nf_co
|
||||
@@ -33,6 +33,7 @@
|
||||
obj-$(CONFIG_NF_CONNTRACK_SANE) += nf_conntrack_sane.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_SIP) += nf_conntrack_sip.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_TFTP) += nf_conntrack_tftp.o
|
||||
|
@ -333,7 +333,7 @@
|
|||
obj-$(CONFIG_NETFILTER_TPROXY) += nf_tproxy_core.o
|
||||
--- a/net/ipv4/netfilter/Kconfig
|
||||
+++ b/net/ipv4/netfilter/Kconfig
|
||||
@@ -268,6 +268,11 @@ config NF_NAT_IRC
|
||||
@@ -257,6 +257,11 @@
|
||||
depends on NF_CONNTRACK && NF_NAT
|
||||
default NF_NAT && NF_CONNTRACK_IRC
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -1292,9 +1292,12 @@ static inline int skb_network_offset(con
|
||||
@@ -1306,9 +1306,12 @@
|
||||
*
|
||||
* Various parts of the networking layer expect at least 16 bytes of
|
||||
* headroom, you should not reduce this.
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,114 +0,0 @@
|
|||
--- a/drivers/net/imq.c
|
||||
+++ b/drivers/net/imq.c
|
||||
@@ -178,10 +178,11 @@ static int imq_nf_queue(struct nf_queue_
|
||||
struct sk_buff *skb2 = NULL;
|
||||
struct Qdisc *q;
|
||||
unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK;
|
||||
- int ret = -1;
|
||||
+ struct netdev_queue *txq;
|
||||
+ int ret = -EINVAL;
|
||||
|
||||
if (index > numdevs)
|
||||
- return -1;
|
||||
+ return ret;
|
||||
|
||||
/* check for imq device by index from cache */
|
||||
dev = imq_devs_cache[index];
|
||||
@@ -194,7 +195,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
if (!dev) {
|
||||
/* not found ?!*/
|
||||
BUG();
|
||||
- return -1;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
imq_devs_cache[index] = dev;
|
||||
@@ -212,17 +213,19 @@ static int imq_nf_queue(struct nf_queue_
|
||||
skb2 = entry->skb;
|
||||
entry->skb = skb_clone(entry->skb, GFP_ATOMIC);
|
||||
if (!entry->skb)
|
||||
- return -1;
|
||||
+ return -ENOMEM;
|
||||
}
|
||||
entry->skb->nf_queue_entry = entry;
|
||||
|
||||
dev->stats.rx_bytes += entry->skb->len;
|
||||
dev->stats.rx_packets++;
|
||||
|
||||
- spin_lock_bh(&dev->queue_lock);
|
||||
- q = dev->qdisc;
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ __netif_tx_lock_bh(txq);
|
||||
+ q = txq->qdisc;
|
||||
+
|
||||
if (q->enqueue) {
|
||||
- q->enqueue(skb_get(entry->skb), q);
|
||||
+ qdisc_enqueue_root(skb_get(entry->skb), q);
|
||||
if (skb_shared(entry->skb)) {
|
||||
entry->skb->destructor = imq_skb_destructor;
|
||||
kfree_skb(entry->skb);
|
||||
@@ -231,7 +234,7 @@ static int imq_nf_queue(struct nf_queue_
|
||||
}
|
||||
if (!test_and_set_bit(1, &priv->tasklet_pending))
|
||||
tasklet_schedule(&priv->tasklet);
|
||||
- spin_unlock_bh(&dev->queue_lock);
|
||||
+ __netif_tx_unlock_bh(txq);
|
||||
|
||||
if (skb2)
|
||||
kfree_skb(ret ? entry->skb : skb2);
|
||||
@@ -248,11 +251,13 @@ static void qdisc_run_tasklet(unsigned l
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)arg;
|
||||
struct imq_private *priv = netdev_priv(dev);
|
||||
+ struct netdev_queue *txq;
|
||||
|
||||
- spin_lock(&dev->queue_lock);
|
||||
- qdisc_run(dev);
|
||||
+ netif_tx_lock(dev);
|
||||
+ txq = netdev_get_tx_queue(dev, 0);
|
||||
+ qdisc_run(txq->qdisc);
|
||||
clear_bit(1, &priv->tasklet_pending);
|
||||
- spin_unlock(&dev->queue_lock);
|
||||
+ netif_tx_unlock(dev);
|
||||
}
|
||||
|
||||
static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
|
||||
--- a/net/ipv4/netfilter/ipt_IMQ.c
|
||||
+++ b/net/ipv4/netfilter/ipt_IMQ.c
|
||||
@@ -7,29 +7,23 @@
|
||||
#include <linux/netfilter_ipv4/ipt_IMQ.h>
|
||||
#include <linux/imq.h>
|
||||
|
||||
-static unsigned int imq_target(struct sk_buff *pskb,
|
||||
- const struct net_device *in,
|
||||
- const struct net_device *out,
|
||||
- unsigned int hooknum,
|
||||
- const struct xt_target *target,
|
||||
- const void *targinfo)
|
||||
+static unsigned int
|
||||
+imq_target(struct sk_buff *pskb,
|
||||
+ const struct xt_target_param *par)
|
||||
{
|
||||
- struct ipt_imq_info *mr = (struct ipt_imq_info *)targinfo;
|
||||
+ struct ipt_imq_info *mr = (struct ipt_imq_info *)par->targinfo;
|
||||
|
||||
pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE;
|
||||
|
||||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
-static bool imq_checkentry(const char *tablename,
|
||||
- const void *e,
|
||||
- const struct xt_target *target,
|
||||
- void *targinfo,
|
||||
- unsigned int hook_mask)
|
||||
+static bool
|
||||
+imq_checkentry(const struct xt_tgchk_param *par)
|
||||
{
|
||||
struct ipt_imq_info *mr;
|
||||
|
||||
- mr = (struct ipt_imq_info *)targinfo;
|
||||
+ mr = (struct ipt_imq_info *)par->targinfo;
|
||||
|
||||
if (mr->todev > IMQ_MAX_DEVS) {
|
||||
printk(KERN_WARNING
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -160,7 +160,6 @@ config NF_CONNTRACK_FTP
|
||||
@@ -160,7 +160,6 @@
|
||||
|
||||
config NF_CONNTRACK_H323
|
||||
tristate "H.323 protocol support"
|
||||
|
@ -8,7 +8,7 @@
|
|||
depends on NETFILTER_ADVANCED
|
||||
help
|
||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||
@@ -493,7 +492,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
||||
@@ -505,7 +504,6 @@
|
||||
|
||||
config NETFILTER_XT_TARGET_TCPMSS
|
||||
tristate '"TCPMSS" target support'
|
||||
|
|
|
@ -294,7 +294,7 @@
|
|||
+#endif /* _NETFILTER_MIME_H */
|
||||
--- a/net/ipv4/netfilter/Makefile
|
||||
+++ b/net/ipv4/netfilter/Makefile
|
||||
@@ -26,6 +26,7 @@ obj-$(CONFIG_NF_NAT_AMANDA) += nf_nat_am
|
||||
@@ -26,6 +26,7 @@
|
||||
obj-$(CONFIG_NF_NAT_FTP) += nf_nat_ftp.o
|
||||
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
|
||||
obj-$(CONFIG_NF_NAT_IRC) += nf_nat_irc.o
|
||||
|
@ -304,7 +304,7 @@
|
|||
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -267,6 +267,16 @@ config NF_CONNTRACK_TFTP
|
||||
@@ -267,6 +267,16 @@
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
|
@ -323,7 +323,7 @@
|
|||
select NETFILTER_NETLINK
|
||||
--- a/net/netfilter/Makefile
|
||||
+++ b/net/netfilter/Makefile
|
||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_NF_CONNTRACK_PPTP) += nf_co
|
||||
@@ -33,6 +33,7 @@
|
||||
obj-$(CONFIG_NF_CONNTRACK_SANE) += nf_conntrack_sane.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_SIP) += nf_conntrack_sip.o
|
||||
obj-$(CONFIG_NF_CONNTRACK_TFTP) += nf_conntrack_tftp.o
|
||||
|
@ -333,7 +333,7 @@
|
|||
obj-$(CONFIG_NETFILTER_TPROXY) += nf_tproxy_core.o
|
||||
--- a/net/ipv4/netfilter/Kconfig
|
||||
+++ b/net/ipv4/netfilter/Kconfig
|
||||
@@ -268,6 +268,11 @@ config NF_NAT_IRC
|
||||
@@ -257,6 +257,11 @@
|
||||
depends on NF_CONNTRACK && NF_NAT
|
||||
default NF_NAT && NF_CONNTRACK_IRC
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -1355,9 +1355,12 @@ static inline int skb_network_offset(con
|
||||
@@ -1369,9 +1369,12 @@
|
||||
*
|
||||
* Various parts of the networking layer expect at least 32 bytes of
|
||||
* headroom, you should not reduce this.
|
||||
|
|
Loading…
Reference in a new issue