projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ipv4: Make output route lookup return rtable directly.
[deliverable/linux.git]
/
net
/
bridge
/
br_netfilter.c
diff --git
a/net/bridge/br_netfilter.c
b/net/bridge/br_netfilter.c
index 4b5b66d07bba7d43a521d2f450386ceea1bf2ca9..45b57b173f70ff2ca1c6b37cabc4e0ef6681e13f 100644
(file)
--- a/
net/bridge/br_netfilter.c
+++ b/
net/bridge/br_netfilter.c
@@
-428,14
+428,15
@@
static int br_nf_pre_routing_finish(struct sk_buff *skb)
if (err != -EHOSTUNREACH || !in_dev || IN_DEV_FORWARD(in_dev))
goto free_skb;
if (err != -EHOSTUNREACH || !in_dev || IN_DEV_FORWARD(in_dev))
goto free_skb;
- if (!ip_route_output_key(dev_net(dev), &rt, &fl)) {
+ rt = ip_route_output_key(dev_net(dev), &fl);
+ if (!IS_ERR(rt)) {
/* - Bridged-and-DNAT'ed traffic doesn't
* require ip_forwarding. */
/* - Bridged-and-DNAT'ed traffic doesn't
* require ip_forwarding. */
- if (
((struct dst_entry *)rt)->
dev == dev) {
- skb_dst_set(skb,
(struct dst_entry *)r
t);
+ if (
rt->dst.
dev == dev) {
+ skb_dst_set(skb,
&rt->ds
t);
goto bridged_dnat;
}
goto bridged_dnat;
}
-
dst_release((struct dst_entry *)
rt);
+
ip_rt_put(
rt);
}
free_skb:
kfree_skb(skb);
}
free_skb:
kfree_skb(skb);
This page took
0.030943 seconds
and
5
git commands to generate.