diff options
Diffstat (limited to 'net/ipv6/route.c')
| -rw-r--r-- | net/ipv6/route.c | 19 | 
1 files changed, 7 insertions, 12 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 373bd0416f6..1c29f95695d 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -72,8 +72,6 @@  #define RT6_TRACE(x...) do { ; } while (0)  #endif -#define CLONE_OFFLINK_ROUTE 0 -  static struct rt6_info * ip6_rt_copy(struct rt6_info *ort);  static struct dst_entry	*ip6_dst_check(struct dst_entry *dst, u32 cookie);  static unsigned int	 ip6_default_advmss(const struct dst_entry *dst); @@ -115,6 +113,11 @@ static struct dst_ops ip6_dst_ops_template = {  	.local_out		=	__ip6_local_out,  }; +static unsigned int ip6_blackhole_default_mtu(const struct dst_entry *dst) +{ +	return 0; +} +  static void ip6_rt_blackhole_update_pmtu(struct dst_entry *dst, u32 mtu)  {  } @@ -124,6 +127,7 @@ static struct dst_ops ip6_dst_blackhole_ops = {  	.protocol		=	cpu_to_be16(ETH_P_IPV6),  	.destroy		=	ip6_dst_destroy,  	.check			=	ip6_dst_check, +	.default_mtu		=	ip6_blackhole_default_mtu,  	.update_pmtu		=	ip6_rt_blackhole_update_pmtu,  }; @@ -196,7 +200,6 @@ static void ip6_dst_destroy(struct dst_entry *dst)  		in6_dev_put(idev);  	}  	if (peer) { -		BUG_ON(!(rt->rt6i_flags & RTF_CACHE));  		rt->rt6i_peer = NULL;  		inet_putpeer(peer);  	} @@ -206,9 +209,6 @@ void rt6_bind_peer(struct rt6_info *rt, int create)  {  	struct inet_peer *peer; -	if (WARN_ON(!(rt->rt6i_flags & RTF_CACHE))) -		return; -  	peer = inet_getpeer_v6(&rt->rt6i_dst.addr, create);  	if (peer && cmpxchg(&rt->rt6i_peer, NULL, peer) != NULL)  		inet_putpeer(peer); @@ -738,13 +738,8 @@ restart:  	if (!rt->rt6i_nexthop && !(rt->rt6i_flags & RTF_NONEXTHOP))  		nrt = rt6_alloc_cow(rt, &fl->fl6_dst, &fl->fl6_src); -	else { -#if CLONE_OFFLINK_ROUTE +	else  		nrt = rt6_alloc_clone(rt, &fl->fl6_dst); -#else -		goto out2; -#endif -	}  	dst_release(&rt->dst);  	rt = nrt ? : net->ipv6.ip6_null_entry;  |