|
@@ -1359,7 +1359,6 @@ static void ipv4_dst_destroy(struct dst_entry *dst)
|
|
|
list_del(&rt->rt_uncached);
|
|
|
spin_unlock_bh(&ul->lock);
|
|
|
}
|
|
|
- lwtstate_put(rt->rt_lwtstate);
|
|
|
}
|
|
|
|
|
|
void rt_flush_dev(struct net_device *dev)
|
|
@@ -1408,7 +1407,7 @@ static void rt_set_nexthop(struct rtable *rt, __be32 daddr,
|
|
|
#ifdef CONFIG_IP_ROUTE_CLASSID
|
|
|
rt->dst.tclassid = nh->nh_tclassid;
|
|
|
#endif
|
|
|
- rt->rt_lwtstate = lwtstate_get(nh->nh_lwtstate);
|
|
|
+ rt->dst.lwtstate = lwtstate_get(nh->nh_lwtstate);
|
|
|
if (unlikely(fnhe))
|
|
|
cached = rt_bind_exception(rt, fnhe, daddr);
|
|
|
else if (!(rt->dst.flags & DST_NOCACHE))
|
|
@@ -1494,7 +1493,6 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
rth->rt_gateway = 0;
|
|
|
rth->rt_uses_gateway = 0;
|
|
|
INIT_LIST_HEAD(&rth->rt_uncached);
|
|
|
- rth->rt_lwtstate = NULL;
|
|
|
if (our) {
|
|
|
rth->dst.input= ip_local_deliver;
|
|
|
rth->rt_flags |= RTCF_LOCAL;
|
|
@@ -1624,19 +1622,18 @@ static int __mkroute_input(struct sk_buff *skb,
|
|
|
rth->rt_gateway = 0;
|
|
|
rth->rt_uses_gateway = 0;
|
|
|
INIT_LIST_HEAD(&rth->rt_uncached);
|
|
|
- rth->rt_lwtstate = NULL;
|
|
|
RT_CACHE_STAT_INC(in_slow_tot);
|
|
|
|
|
|
rth->dst.input = ip_forward;
|
|
|
rth->dst.output = ip_output;
|
|
|
|
|
|
rt_set_nexthop(rth, daddr, res, fnhe, res->fi, res->type, itag);
|
|
|
- if (lwtunnel_output_redirect(rth->rt_lwtstate)) {
|
|
|
- rth->rt_lwtstate->orig_output = rth->dst.output;
|
|
|
+ if (lwtunnel_output_redirect(rth->dst.lwtstate)) {
|
|
|
+ rth->dst.lwtstate->orig_output = rth->dst.output;
|
|
|
rth->dst.output = lwtunnel_output;
|
|
|
}
|
|
|
- if (lwtunnel_input_redirect(rth->rt_lwtstate)) {
|
|
|
- rth->rt_lwtstate->orig_input = rth->dst.input;
|
|
|
+ if (lwtunnel_input_redirect(rth->dst.lwtstate)) {
|
|
|
+ rth->dst.lwtstate->orig_input = rth->dst.input;
|
|
|
rth->dst.input = lwtunnel_input;
|
|
|
}
|
|
|
skb_dst_set(skb, &rth->dst);
|
|
@@ -1695,7 +1692,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|
|
by fib_lookup.
|
|
|
*/
|
|
|
|
|
|
- tun_info = skb_tunnel_info(skb, AF_INET);
|
|
|
+ tun_info = skb_tunnel_info(skb);
|
|
|
if (tun_info && tun_info->mode == IP_TUNNEL_INFO_RX)
|
|
|
fl4.flowi4_tun_key.tun_id = tun_info->key.tun_id;
|
|
|
else
|
|
@@ -1815,7 +1812,6 @@ local_input:
|
|
|
rth->rt_gateway = 0;
|
|
|
rth->rt_uses_gateway = 0;
|
|
|
INIT_LIST_HEAD(&rth->rt_uncached);
|
|
|
- rth->rt_lwtstate = NULL;
|
|
|
|
|
|
RT_CACHE_STAT_INC(in_slow_tot);
|
|
|
if (res.type == RTN_UNREACHABLE) {
|
|
@@ -2006,7 +2002,6 @@ add:
|
|
|
rth->rt_gateway = 0;
|
|
|
rth->rt_uses_gateway = 0;
|
|
|
INIT_LIST_HEAD(&rth->rt_uncached);
|
|
|
- rth->rt_lwtstate = NULL;
|
|
|
RT_CACHE_STAT_INC(out_slow_tot);
|
|
|
|
|
|
if (flags & RTCF_LOCAL)
|
|
@@ -2029,7 +2024,7 @@ add:
|
|
|
}
|
|
|
|
|
|
rt_set_nexthop(rth, fl4->daddr, res, fnhe, fi, type, 0);
|
|
|
- if (lwtunnel_output_redirect(rth->rt_lwtstate))
|
|
|
+ if (lwtunnel_output_redirect(rth->dst.lwtstate))
|
|
|
rth->dst.output = lwtunnel_output;
|
|
|
|
|
|
return rth;
|
|
@@ -2293,7 +2288,6 @@ struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_or
|
|
|
rt->rt_uses_gateway = ort->rt_uses_gateway;
|
|
|
|
|
|
INIT_LIST_HEAD(&rt->rt_uncached);
|
|
|
- rt->rt_lwtstate = NULL;
|
|
|
dst_free(new);
|
|
|
}
|
|
|
|