diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-17 14:39:44 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-20 13:38:34 -0700 |
commit | 4fd551d7bed93af60af61c5a324b8f5dff37953a (patch) | |
tree | 2cc151b3dc88793340c50421799627b06b766a43 /net/ipv4/ipmr.c | |
parent | 93ac53410a82a4f1bf2baf9d65d95cc29f2774ca (diff) |
ipv4: Kill rt->rt_oif
Never actually used.
It was being set on output routes to the original OIF specified in the
flow key used for the lookup.
Adjust the only user, ipmr_rt_fib_lookup(), for greater correctness of
the flowi4_oif and flowi4_iif values, thanks to feedback from Julian
Anastasov.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ipmr.c')
-rw-r--r-- | net/ipv4/ipmr.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index eee3bf6676fe..8eec8f4a0536 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c @@ -1795,8 +1795,11 @@ static struct mr_table *ipmr_rt_fib_lookup(struct net *net, struct sk_buff *skb) .daddr = iph->daddr, .saddr = iph->saddr, .flowi4_tos = RT_TOS(iph->tos), - .flowi4_oif = rt->rt_oif, - .flowi4_iif = rt->rt_iif, + .flowi4_oif = (rt_is_output_route(rt) ? + skb->dev->ifindex : 0), + .flowi4_iif = (rt_is_output_route(rt) ? + net->loopback_dev->ifindex : + skb->dev->ifindex), .flowi4_mark = skb->mark, }; struct mr_table *mrt; |