Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 75499
b: refs/heads/master
c: 2948d2e
h: refs/heads/master
i:
  75497: fc83d30
  75495: c0896dc
v: v3
  • Loading branch information
Patrick McHardy authored and David S. Miller committed Jan 12, 2008
1 parent 4d9b2ea commit eef579a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 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: 0ff4d77bd9fe86ca1bc7f44839d79f8a349a62f0
refs/heads/master: 2948d2ebbb98747b912ac6d0c864b4d02be8a6f5
18 changes: 12 additions & 6 deletions trunk/net/bridge/br_netfilter.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,9 @@ static void __br_dnat_complain(void)
* Let us first consider the case that ip_route_input() succeeds:
*
* If skb->dst->dev equals the logical bridge device the packet
* came in on, we can consider this bridging. We then call
* skb->dst->output() which will make the packet enter br_nf_local_out()
* came in on, we can consider this bridging. The packet is passed
* through the neighbour output function to build a new destination
* MAC address, which will make the packet enter br_nf_local_out()
* not much later. In that function it is assured that the iptables
* FORWARD chain is traversed for the packet.
*
Expand Down Expand Up @@ -285,12 +286,17 @@ static int br_nf_pre_routing_finish_bridge(struct sk_buff *skb)
skb->nf_bridge->mask ^= BRNF_NF_BRIDGE_PREROUTING;

skb->dev = bridge_parent(skb->dev);
if (!skb->dev)
kfree_skb(skb);
else {
if (skb->dev) {
struct dst_entry *dst = skb->dst;

nf_bridge_pull_encap_header(skb);
skb->dst->output(skb);

if (dst->hh)
return neigh_hh_output(dst->hh, skb);
else if (dst->neighbour)
return dst->neighbour->output(skb);
}
kfree_skb(skb);
return 0;
}

Expand Down

0 comments on commit eef579a

Please sign in to comment.