diff options
author | David S. Miller <davem@davemloft.net> | 2011-07-17 16:34:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-07-18 02:11:17 -0400 |
commit | 8f40b161de4f27402b4c0659ad2ae83fad5a0cdd (patch) | |
tree | 9e2dbd4ba8a66916c690b0e5791ac25ea0958c26 /net/bridge | |
parent | 69ecca86da4890c13a5e29c51b4ac76a1a8a62c9 (diff) |
neigh: Pass neighbour entry to output ops.
This will get us closer to being able to do "neigh stuff"
completely independent of the underlying dst_entry for
protocols (ipv4/ipv6) that wish to do so.
We will also be able to make dst entries neigh-less.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r-- | net/bridge/br_netfilter.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index 75ee421917c7..1fe43fdf9973 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c | |||
@@ -355,14 +355,14 @@ static int br_nf_pre_routing_finish_bridge(struct sk_buff *skb) | |||
355 | neigh_hh_bridge(&neigh->hh, skb); | 355 | neigh_hh_bridge(&neigh->hh, skb); |
356 | skb->dev = nf_bridge->physindev; | 356 | skb->dev = nf_bridge->physindev; |
357 | return br_handle_frame_finish(skb); | 357 | return br_handle_frame_finish(skb); |
358 | } else if (dst->neighbour) { | 358 | } else { |
359 | /* the neighbour function below overwrites the complete | 359 | /* the neighbour function below overwrites the complete |
360 | * MAC header, so we save the Ethernet source address and | 360 | * MAC header, so we save the Ethernet source address and |
361 | * protocol number. */ | 361 | * protocol number. */ |
362 | skb_copy_from_linear_data_offset(skb, -(ETH_HLEN-ETH_ALEN), skb->nf_bridge->data, ETH_HLEN-ETH_ALEN); | 362 | skb_copy_from_linear_data_offset(skb, -(ETH_HLEN-ETH_ALEN), skb->nf_bridge->data, ETH_HLEN-ETH_ALEN); |
363 | /* tell br_dev_xmit to continue with forwarding */ | 363 | /* tell br_dev_xmit to continue with forwarding */ |
364 | nf_bridge->mask |= BRNF_BRIDGED_DNAT; | 364 | nf_bridge->mask |= BRNF_BRIDGED_DNAT; |
365 | return dst->neighbour->output(skb); | 365 | return neigh->output(neigh, skb); |
366 | } | 366 | } |
367 | free_skb: | 367 | free_skb: |
368 | kfree_skb(skb); | 368 | kfree_skb(skb); |