]> Pileus Git - ~andy/linux/blobdiff - net/ipv4/ping.c
ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams
[~andy/linux] / net / ipv4 / ping.c
index e09e8839d622fd17c11a59840d561bac99c43d15..4a9e4266a0c3bf6aa98701cc4a0c7ac223a5f86e 100644 (file)
@@ -906,7 +906,12 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
                }
 
                if (inet6_sk(sk)->rxopt.all)
-                       pingv6_ops.ip6_datagram_recv_ctl(sk, msg, skb);
+                       pingv6_ops.ip6_datagram_recv_common_ctl(sk, msg, skb);
+               if (skb->protocol == htons(ETH_P_IPV6) &&
+                   inet6_sk(sk)->rxopt.all)
+                       pingv6_ops.ip6_datagram_recv_specific_ctl(sk, msg, skb);
+               else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags)
+                       ip_cmsg_recv(msg, skb);
 #endif
        } else {
                BUG();