|
|
@@ -574,7 +574,7 @@
|
|
|
+
|
|
|
--- a/drivers/net/Kconfig
|
|
|
+++ b/drivers/net/Kconfig
|
|
|
-@@ -119,6 +119,129 @@
|
|
|
+@@ -119,6 +119,129 @@ config EQUALIZER
|
|
|
To compile this driver as a module, choose M here: the module
|
|
|
will be called eql. If unsure, say N.
|
|
|
|
|
|
@@ -706,7 +706,7 @@
|
|
|
select CRC32
|
|
|
--- a/drivers/net/Makefile
|
|
|
+++ b/drivers/net/Makefile
|
|
|
-@@ -152,6 +152,7 @@
|
|
|
+@@ -152,6 +152,7 @@ obj-$(CONFIG_SLHC) += slhc.o
|
|
|
obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o
|
|
|
|
|
|
obj-$(CONFIG_DUMMY) += dummy.o
|
|
|
@@ -768,7 +768,7 @@
|
|
|
|
|
|
/* Don't change this without changing skb_csum_unnecessary! */
|
|
|
#define CHECKSUM_NONE 0
|
|
|
-@@ -333,6 +336,9 @@
|
|
|
+@@ -333,6 +336,9 @@ struct sk_buff {
|
|
|
* first. This is owned by whoever has the skb queued ATM.
|
|
|
*/
|
|
|
char cb[48];
|
|
|
@@ -778,7 +778,7 @@
|
|
|
|
|
|
unsigned int len,
|
|
|
data_len;
|
|
|
-@@ -363,6 +369,9 @@
|
|
|
+@@ -363,6 +369,9 @@ struct sk_buff {
|
|
|
struct nf_conntrack *nfct;
|
|
|
struct sk_buff *nfct_reasm;
|
|
|
#endif
|
|
|
@@ -788,7 +788,7 @@
|
|
|
#ifdef CONFIG_BRIDGE_NETFILTER
|
|
|
struct nf_bridge_info *nf_bridge;
|
|
|
#endif
|
|
|
-@@ -383,6 +392,9 @@
|
|
|
+@@ -383,6 +392,9 @@ struct sk_buff {
|
|
|
__u8 requeue:1;
|
|
|
#endif
|
|
|
/* 0/13/14 bit hole */
|
|
|
@@ -798,7 +798,7 @@
|
|
|
|
|
|
#ifdef CONFIG_NET_DMA
|
|
|
dma_cookie_t dma_cookie;
|
|
|
-@@ -423,6 +435,12 @@
|
|
|
+@@ -423,6 +435,12 @@ extern void skb_dma_unmap(struct device
|
|
|
enum dma_data_direction dir);
|
|
|
#endif
|
|
|
|
|
|
@@ -811,7 +811,7 @@
|
|
|
extern void kfree_skb(struct sk_buff *skb);
|
|
|
extern void consume_skb(struct sk_buff *skb);
|
|
|
extern void __kfree_skb(struct sk_buff *skb);
|
|
|
-@@ -1931,6 +1949,10 @@
|
|
|
+@@ -1931,6 +1949,10 @@ static inline void __nf_copy(struct sk_b
|
|
|
dst->nfct_reasm = src->nfct_reasm;
|
|
|
nf_conntrack_get_reasm(src->nfct_reasm);
|
|
|
#endif
|
|
|
@@ -834,7 +834,7 @@
|
|
|
#include <linux/proc_fs.h>
|
|
|
#include <linux/seq_file.h>
|
|
|
#include <linux/stat.h>
|
|
|
-@@ -1678,7 +1681,11 @@
|
|
|
+@@ -1678,7 +1681,11 @@ int dev_hard_start_xmit(struct sk_buff *
|
|
|
int rc;
|
|
|
|
|
|
if (likely(!skb->next)) {
|
|
|
@@ -847,7 +847,7 @@
|
|
|
dev_queue_xmit_nit(skb, dev);
|
|
|
|
|
|
if (netif_needs_gso(dev, skb)) {
|
|
|
-@@ -1748,8 +1755,7 @@
|
|
|
+@@ -1749,8 +1756,7 @@ u16 skb_tx_hash(const struct net_device
|
|
|
}
|
|
|
EXPORT_SYMBOL(skb_tx_hash);
|
|
|
|
|
|
@@ -857,7 +857,7 @@
|
|
|
{
|
|
|
const struct net_device_ops *ops = dev->netdev_ops;
|
|
|
u16 queue_index = 0;
|
|
|
-@@ -1762,6 +1768,7 @@
|
|
|
+@@ -1763,6 +1769,7 @@ static struct netdev_queue *dev_pick_tx(
|
|
|
skb_set_queue_mapping(skb, queue_index);
|
|
|
return netdev_get_tx_queue(dev, queue_index);
|
|
|
}
|
|
|
@@ -867,7 +867,7 @@
|
|
|
* dev_queue_xmit - transmit a buffer
|
|
|
--- a/include/linux/netdevice.h
|
|
|
+++ b/include/linux/netdevice.h
|
|
|
-@@ -1102,6 +1102,7 @@
|
|
|
+@@ -1102,6 +1102,7 @@ extern int dev_alloc_name(struct net_de
|
|
|
extern int dev_open(struct net_device *dev);
|
|
|
extern int dev_close(struct net_device *dev);
|
|
|
extern void dev_disable_lro(struct net_device *dev);
|
|
|
@@ -889,7 +889,7 @@
|
|
|
+
|
|
|
--- a/include/net/netfilter/nf_queue.h
|
|
|
+++ b/include/net/netfilter/nf_queue.h
|
|
|
-@@ -13,6 +13,12 @@
|
|
|
+@@ -13,6 +13,12 @@ struct nf_queue_entry {
|
|
|
struct net_device *indev;
|
|
|
struct net_device *outdev;
|
|
|
int (*okfn)(struct sk_buff *);
|
|
|
@@ -902,7 +902,7 @@
|
|
|
};
|
|
|
|
|
|
#define nf_queue_entry_reroute(x) ((void *)x + sizeof(struct nf_queue_entry))
|
|
|
-@@ -30,5 +36,11 @@
|
|
|
+@@ -30,5 +36,11 @@ extern int nf_unregister_queue_handler(u
|
|
|
const struct nf_queue_handler *qh);
|
|
|
extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
|
|
|
extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
|
|
|
@@ -926,7 +926,7 @@
|
|
|
|
|
|
static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
|
|
|
struct pipe_buffer *buf)
|
|
|
-@@ -90,6 +93,80 @@
|
|
|
+@@ -90,6 +93,80 @@ static int sock_pipe_buf_steal(struct pi
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
@@ -1007,7 +1007,7 @@
|
|
|
|
|
|
/* Pipe buffer operations for a socket. */
|
|
|
static struct pipe_buf_operations sock_pipe_buf_ops = {
|
|
|
-@@ -389,6 +466,15 @@
|
|
|
+@@ -389,6 +466,15 @@ static void skb_release_head_state(struc
|
|
|
WARN_ON(in_irq());
|
|
|
skb->destructor(skb);
|
|
|
}
|
|
|
@@ -1023,7 +1023,7 @@
|
|
|
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
|
|
nf_conntrack_put(skb->nfct);
|
|
|
nf_conntrack_put_reasm(skb->nfct_reasm);
|
|
|
-@@ -524,6 +610,9 @@
|
|
|
+@@ -524,6 +610,9 @@ static void __copy_skb_header(struct sk_
|
|
|
new->sp = secpath_get(old->sp);
|
|
|
#endif
|
|
|
memcpy(new->cb, old->cb, sizeof(old->cb));
|
|
|
@@ -1033,7 +1033,7 @@
|
|
|
new->csum_start = old->csum_start;
|
|
|
new->csum_offset = old->csum_offset;
|
|
|
new->local_df = old->local_df;
|
|
|
-@@ -2766,6 +2855,13 @@
|
|
|
+@@ -2767,6 +2856,13 @@ void __init skb_init(void)
|
|
|
0,
|
|
|
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
|
|
|
NULL);
|
|
|
@@ -1049,7 +1049,7 @@
|
|
|
/**
|
|
|
--- a/net/netfilter/Kconfig
|
|
|
+++ b/net/netfilter/Kconfig
|
|
|
-@@ -396,6 +396,18 @@
|
|
|
+@@ -396,6 +396,18 @@ config NETFILTER_XT_TARGET_LED
|
|
|
For more information on the LEDs available on your system, see
|
|
|
Documentation/leds-class.txt
|
|
|
|
|
|
@@ -1070,7 +1070,7 @@
|
|
|
default m if NETFILTER_ADVANCED=n
|
|
|
--- a/net/netfilter/Makefile
|
|
|
+++ b/net/netfilter/Makefile
|
|
|
-@@ -46,6 +46,7 @@
|
|
|
+@@ -46,6 +46,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CONNMAR
|
|
|
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
|
|
|
obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
|
|
|
obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
|
|
|
@@ -1080,7 +1080,7 @@
|
|
|
obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
|
|
|
--- a/net/netfilter/nf_queue.c
|
|
|
+++ b/net/netfilter/nf_queue.c
|
|
|
-@@ -20,6 +20,26 @@
|
|
|
+@@ -20,6 +20,26 @@ static const struct nf_queue_handler *qu
|
|
|
|
|
|
static DEFINE_MUTEX(queue_handler_mutex);
|
|
|
|
|
|
@@ -1107,7 +1107,7 @@
|
|
|
/* return EBUSY when somebody else is registered, return EEXIST if the
|
|
|
* same handler is registered, return 0 in case of success. */
|
|
|
int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
|
|
|
-@@ -80,7 +100,7 @@
|
|
|
+@@ -80,7 +100,7 @@ void nf_unregister_queue_handlers(const
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
|
|
|
|
|
|
@@ -1116,7 +1116,7 @@
|
|
|
{
|
|
|
/* Release those devices we held, or Alexey will kill me. */
|
|
|
if (entry->indev)
|
|
|
-@@ -100,6 +120,7 @@
|
|
|
+@@ -100,6 +120,7 @@ static void nf_queue_entry_release_refs(
|
|
|
/* Drop reference to owner of hook which queued us. */
|
|
|
module_put(entry->elem->owner);
|
|
|
}
|
|
|
@@ -1124,7 +1124,7 @@
|
|
|
|
|
|
/*
|
|
|
* Any packet that leaves via this function must come back
|
|
|
-@@ -121,12 +142,26 @@
|
|
|
+@@ -121,12 +142,26 @@ static int __nf_queue(struct sk_buff *sk
|
|
|
#endif
|
|
|
const struct nf_afinfo *afinfo;
|
|
|
const struct nf_queue_handler *qh;
|
|
|
@@ -1151,7 +1151,7 @@
|
|
|
goto err_unlock;
|
|
|
|
|
|
afinfo = nf_get_afinfo(pf);
|
|
|
-@@ -145,6 +180,10 @@
|
|
|
+@@ -145,6 +180,10 @@ static int __nf_queue(struct sk_buff *sk
|
|
|
.indev = indev,
|
|
|
.outdev = outdev,
|
|
|
.okfn = okfn,
|
|
|
@@ -1162,7 +1162,7 @@
|
|
|
};
|
|
|
|
|
|
/* If it's going away, ignore hook. */
|
|
|
-@@ -170,8 +209,19 @@
|
|
|
+@@ -170,8 +209,19 @@ static int __nf_queue(struct sk_buff *sk
|
|
|
}
|
|
|
#endif
|
|
|
afinfo->saveroute(skb, entry);
|