raw.c (9a64e8e0ace51b309fdcff4b4754b3649250382a) | raw.c (81aded24675ebda5de8a68843250ad15584ac38a) |
---|---|
1/* 2 * RAW sockets for IPv6 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * 8 * Adapted from linux/net/ipv4/raw.c --- 314 unchanged lines hidden (view full) --- 323 1. User requested recverr. 324 2. Socket is connected (otherwise the error indication 325 is useless without recverr and error is hard. 326 */ 327 if (!np->recverr && sk->sk_state != TCP_ESTABLISHED) 328 return; 329 330 harderr = icmpv6_err_convert(type, code, &err); | 1/* 2 * RAW sockets for IPv6 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * 8 * Adapted from linux/net/ipv4/raw.c --- 314 unchanged lines hidden (view full) --- 323 1. User requested recverr. 324 2. Socket is connected (otherwise the error indication 325 is useless without recverr and error is hard. 326 */ 327 if (!np->recverr && sk->sk_state != TCP_ESTABLISHED) 328 return; 329 330 harderr = icmpv6_err_convert(type, code, &err); |
331 if (type == ICMPV6_PKT_TOOBIG) | 331 if (type == ICMPV6_PKT_TOOBIG) { 332 ip6_sk_update_pmtu(skb, sk, info); |
332 harderr = (np->pmtudisc == IPV6_PMTUDISC_DO); | 333 harderr = (np->pmtudisc == IPV6_PMTUDISC_DO); |
333 | 334 } |
334 if (np->recverr) { 335 u8 *payload = skb->data; 336 if (!inet->hdrincl) 337 payload += offset; 338 ipv6_icmp_error(sk, skb, err, 0, ntohl(info), payload); 339 } 340 341 if (np->recverr || harderr) { --- 1027 unchanged lines hidden --- | 335 if (np->recverr) { 336 u8 *payload = skb->data; 337 if (!inet->hdrincl) 338 payload += offset; 339 ipv6_icmp_error(sk, skb, err, 0, ntohl(info), payload); 340 } 341 342 if (np->recverr || harderr) { --- 1027 unchanged lines hidden --- |