X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fipv4%2Fping.c;h=4a9e4266a0c3bf6aa98701cc4a0c7ac223a5f86e;hb=4b261c75a99f29c93a0b6babfc180cdf566bd654;hp=e09e8839d622fd17c11a59840d561bac99c43d15;hpb=a6e2fe17eba47681e82cdb9cfed5a67b57802a78;p=~andy%2Flinux diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c index e09e8839d62..4a9e4266a0c 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -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();