diff options
author | Florian Westphal <fw@strlen.de> | 2015-03-18 20:55:31 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-03-22 19:45:55 +0100 |
commit | 8d0451638ad3f7ccd5250c1dd90e06ad487b2703 (patch) | |
tree | 22e8caef37b59bbc0600e2a7dea95a733d4f385e /net/bridge/br_netfilter.c | |
parent | ffdb210eb415501c289f6becafb54fe2f4535efa (diff) | |
download | op-kernel-dev-8d0451638ad3f7ccd5250c1dd90e06ad487b2703.zip op-kernel-dev-8d0451638ad3f7ccd5250c1dd90e06ad487b2703.tar.gz |
netfilter: bridge: kill nf_bridge_pad
The br_netfilter frag output function calls skb_cow_head() so in
case it needs a larger headroom to e.g. re-add a previously stripped PPPOE
or VLAN header things will still work (at cost of reallocation).
We can then move nf_bridge_encap_header_len to br_netfilter.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/bridge/br_netfilter.c')
-rw-r--r-- | net/bridge/br_netfilter.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index bd2d24d..f3884a1 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c @@ -153,6 +153,18 @@ static inline struct nf_bridge_info *nf_bridge_unshare(struct sk_buff *skb) return nf_bridge; } +static unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb) +{ + switch (skb->protocol) { + case __cpu_to_be16(ETH_P_8021Q): + return VLAN_HLEN; + case __cpu_to_be16(ETH_P_PPP_SES): + return PPPOE_SES_HLEN; + default: + return 0; + } +} + static inline void nf_bridge_push_encap_header(struct sk_buff *skb) { unsigned int len = nf_bridge_encap_header_len(skb); |