Merge tag 'drm-intel-fixes-2014-04-11' of git://anongit.freedesktop.org/drm-intel...
[firefly-linux-kernel-4.4.55.git] / include / net / ip6_route.h
index 017badb1aec7e8648a6f71d473862b730a78b4e8..3c3bb184eb8f154b61c9f93fd5ea37ffefadeba8 100644 (file)
@@ -51,6 +51,11 @@ static inline unsigned int rt6_flags2srcprefs(int flags)
        return (flags >> 3) & 7;
 }
 
+static inline bool rt6_need_strict(const struct in6_addr *daddr)
+{
+       return ipv6_addr_type(daddr) &
+               (IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK);
+}
 
 void ip6_route_input(struct sk_buff *skb);
 
@@ -171,7 +176,14 @@ static inline int ip6_skb_dst_mtu(struct sk_buff *skb)
 
 static inline bool ip6_sk_accept_pmtu(const struct sock *sk)
 {
-       return inet6_sk(sk)->pmtudisc != IPV6_PMTUDISC_INTERFACE;
+       return inet6_sk(sk)->pmtudisc != IPV6_PMTUDISC_INTERFACE &&
+              inet6_sk(sk)->pmtudisc != IPV6_PMTUDISC_OMIT;
+}
+
+static inline bool ip6_sk_local_df(const struct sock *sk)
+{
+       return inet6_sk(sk)->pmtudisc < IPV6_PMTUDISC_DO ||
+              inet6_sk(sk)->pmtudisc == IPV6_PMTUDISC_OMIT;
 }
 
 static inline struct in6_addr *rt6_nexthop(struct rt6_info *rt)