summaryrefslogtreecommitdiffstats
path: root/net/ipv6/raw.c
diff options
context:
space:
mode:
authorBrian Haley <brian.haley@hp.com>2010-04-23 11:26:09 +0000
committerDavid S. Miller <davem@davemloft.net>2010-04-23 23:35:29 -0700
commit4b340ae20d0e2366792abe70f46629e576adaf5e (patch)
treeb0c413a0348e722fbc23d45508224076b6e60f92 /net/ipv6/raw.c
parent13b52cd44670e3359055e9918d0e766d89836425 (diff)
downloadlinux-stable-4b340ae20d0e2366792abe70f46629e576adaf5e.tar.gz
linux-stable-4b340ae20d0e2366792abe70f46629e576adaf5e.tar.bz2
linux-stable-4b340ae20d0e2366792abe70f46629e576adaf5e.zip
IPv6: Complete IPV6_DONTFRAG support
Finally add support to detect a local IPV6_DONTFRAG event and return the relevant data to the user if they've enabled IPV6_RECVPATHMTU on the socket. The next recvmsg() will return no data, but have an IPV6_PATHMTU as ancillary data. Signed-off-by: Brian Haley <brian.haley@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/raw.c')
-rw-r--r--net/ipv6/raw.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index 44a84ea9b3e8..85627386cb02 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -461,6 +461,9 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
if (flags & MSG_ERRQUEUE)
return ipv6_recv_error(sk, msg, len);
+ if (np->rxpmtu && np->rxopt.bits.rxpmtu)
+ return ipv6_recv_rxpmtu(sk, msg, len);
+
skb = skb_recv_datagram(sk, flags, noblock, &err);
if (!skb)
goto out;