Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 33617
b: refs/heads/master
c: 3a13813
h: refs/heads/master
i:
  33615: b46e123
v: v3
  • Loading branch information
Stephen Hemminger authored and David S. Miller committed Aug 27, 2006
1 parent ee5434e commit 22e477c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8dbc16033e35c7443cd56cb5ba308bb19cb7b469
refs/heads/master: 3a13813e6effcfad5910d47b15b724621b50b878
14 changes: 12 additions & 2 deletions trunk/include/linux/netfilter_bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,25 @@ enum nf_br_hook_priorities {

/* Only used in br_forward.c */
static inline
void nf_bridge_maybe_copy_header(struct sk_buff *skb)
int nf_bridge_maybe_copy_header(struct sk_buff *skb)
{
int err;

if (skb->nf_bridge) {
if (skb->protocol == __constant_htons(ETH_P_8021Q)) {
err = skb_cow(skb, 18);
if (err)
return err;
memcpy(skb->data - 18, skb->nf_bridge->data, 18);
skb_push(skb, 4);
} else
} else {
err = skb_cow(skb, 16);
if (err)
return err;
memcpy(skb->data - 16, skb->nf_bridge->data, 16);
}
}
return 0;
}

/* This is called by the IP fragmenting code and it ensures there is
Expand Down
10 changes: 7 additions & 3 deletions trunk/net/bridge/br_forward.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,15 @@ int br_dev_queue_push_xmit(struct sk_buff *skb)
else {
#ifdef CONFIG_BRIDGE_NETFILTER
/* ip_refrag calls ip_fragment, doesn't copy the MAC header. */
nf_bridge_maybe_copy_header(skb);
if (nf_bridge_maybe_copy_header(skb))
kfree_skb(skb);
else
#endif
skb_push(skb, ETH_HLEN);
{
skb_push(skb, ETH_HLEN);

dev_queue_xmit(skb);
dev_queue_xmit(skb);
}
}

return 0;
Expand Down

0 comments on commit 22e477c

Please sign in to comment.