|
@@ -405,9 +405,6 @@ static inline bool ipv6_datagram_support_addr(struct sock_exterr_skb *serr)
|
|
|
* At one point, excluding local errors was a quick test to identify icmp/icmp6
|
|
|
* errors. This is no longer true, but the test remained, so the v6 stack,
|
|
|
* unlike v4, also honors cmsg requests on all wifi and timestamp errors.
|
|
|
- *
|
|
|
- * Timestamp code paths do not initialize the fields expected by cmsg:
|
|
|
- * the PKTINFO fields in skb->cb[]. Fill those in here.
|
|
|
*/
|
|
|
static bool ip6_datagram_support_cmsg(struct sk_buff *skb,
|
|
|
struct sock_exterr_skb *serr)
|
|
@@ -419,14 +416,9 @@ static bool ip6_datagram_support_cmsg(struct sk_buff *skb,
|
|
|
if (serr->ee.ee_origin == SO_EE_ORIGIN_LOCAL)
|
|
|
return false;
|
|
|
|
|
|
- if (!skb->dev)
|
|
|
+ if (!IP6CB(skb)->iif)
|
|
|
return false;
|
|
|
|
|
|
- if (skb->protocol == htons(ETH_P_IPV6))
|
|
|
- IP6CB(skb)->iif = skb->dev->ifindex;
|
|
|
- else
|
|
|
- PKTINFO_SKB_CB(skb)->ipi_ifindex = skb->dev->ifindex;
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|