diff options
Diffstat (limited to 'include/net/ip.h')
| -rw-r--r-- | include/net/ip.h | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/include/net/ip.h b/include/net/ip.h index 746abff9ce51..f49b3a576bec 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -328,6 +328,13 @@ int ip_decrease_ttl(struct iphdr *iph)  	return --iph->ttl;  } +static inline int ip_mtu_locked(const struct dst_entry *dst) +{ +	const struct rtable *rt = (const struct rtable *)dst; + +	return rt->rt_mtu_locked || dst_metric_locked(dst, RTAX_MTU); +} +  static inline  int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst)  { @@ -335,7 +342,7 @@ int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst)  	return  pmtudisc == IP_PMTUDISC_DO ||  		(pmtudisc == IP_PMTUDISC_WANT && -		 !(dst_metric_locked(dst, RTAX_MTU))); +		 !ip_mtu_locked(dst));  }  static inline bool ip_sk_accept_pmtu(const struct sock *sk) @@ -361,7 +368,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst,  	struct net *net = dev_net(dst->dev);  	if (net->ipv4.sysctl_ip_fwd_use_pmtu || -	    dst_metric_locked(dst, RTAX_MTU) || +	    ip_mtu_locked(dst) ||  	    !forwarding)  		return dst_mtu(dst); | 

