+static void ipv6_recv_error_pktinfo(struct msghdr *msg, struct sock *sk,
+ struct sk_buff *skb)
+{
+ struct ipv6_pinfo *np = inet6_sk(sk);
+
+ if (np->rxopt.bits.rxinfo && skb->dev) {
+ struct in6_pktinfo info;
+
+ memset(&info, 0, sizeof(info));
+ if (skb->protocol == htons(ETH_P_IPV6))
+ info.ipi6_addr = ipv6_hdr(skb)->daddr;
+ else
+ ipv6_addr_set_v4mapped(ip_hdr(skb)->daddr,
+ &info.ipi6_addr);
+
+ info.ipi6_ifindex = skb->dev->ifindex;
+ net_info_ratelimited("yes: ifindex=%d\n", info.ipi6_ifindex);
forgot to remove this debug message.. removing it from my local copy right away.
+ put_cmsg(msg, SOL_IPV6, IPV6_PKTINFO, sizeof(info), &info);
+ }
+}
+