ipv4: introduce new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE
[cascardo/linux.git] / include / net / route.h
index dd4ae00..f68c167 100644 (file)
@@ -313,12 +313,20 @@ static inline int ip4_dst_hoplimit(const struct dst_entry *dst)
        return hoplimit;
 }
 
-static inline int ip_skb_dst_mtu(struct sk_buff *skb)
+static inline bool ip_sk_accept_pmtu(const struct sock *sk)
 {
-       struct inet_sock *inet = skb->sk ? inet_sk(skb->sk) : NULL;
+       return inet_sk(sk)->pmtudisc != IP_PMTUDISC_INTERFACE;
+}
 
-       return (inet && inet->pmtudisc == IP_PMTUDISC_PROBE) ?
-              skb_dst(skb)->dev->mtu : dst_mtu(skb_dst(skb));
+static inline bool ip_sk_use_pmtu(const struct sock *sk)
+{
+       return inet_sk(sk)->pmtudisc < IP_PMTUDISC_PROBE;
+}
+
+static inline int ip_skb_dst_mtu(const struct sk_buff *skb)
+{
+       return (!skb->sk || ip_sk_use_pmtu(skb->sk)) ?
+              dst_mtu(skb_dst(skb)) : skb_dst(skb)->dev->mtu;
 }
 
 #endif /* _ROUTE_H */