Lines Matching refs:serr
304 struct sock_exterr_skb *serr; in ipv6_icmp_error() local
315 serr = SKB_EXT_ERR(skb); in ipv6_icmp_error()
316 serr->ee.ee_errno = err; in ipv6_icmp_error()
317 serr->ee.ee_origin = SO_EE_ORIGIN_ICMP6; in ipv6_icmp_error()
318 serr->ee.ee_type = icmph->icmp6_type; in ipv6_icmp_error()
319 serr->ee.ee_code = icmph->icmp6_code; in ipv6_icmp_error()
320 serr->ee.ee_pad = 0; in ipv6_icmp_error()
321 serr->ee.ee_info = info; in ipv6_icmp_error()
322 serr->ee.ee_data = 0; in ipv6_icmp_error()
323 serr->addr_offset = (u8 *)&(((struct ipv6hdr *)(icmph + 1))->daddr) - in ipv6_icmp_error()
325 serr->port = port; in ipv6_icmp_error()
330 ipv6_icmp_error_rfc4884(skb, &serr->ee.ee_rfc4884); in ipv6_icmp_error()
341 struct sock_exterr_skb *serr; in ipv6_local_error() local
360 serr = SKB_EXT_ERR(skb); in ipv6_local_error()
361 serr->ee.ee_errno = err; in ipv6_local_error()
362 serr->ee.ee_origin = SO_EE_ORIGIN_LOCAL; in ipv6_local_error()
363 serr->ee.ee_type = 0; in ipv6_local_error()
364 serr->ee.ee_code = 0; in ipv6_local_error()
365 serr->ee.ee_pad = 0; in ipv6_local_error()
366 serr->ee.ee_info = info; in ipv6_local_error()
367 serr->ee.ee_data = 0; in ipv6_local_error()
368 serr->addr_offset = (u8 *)&iph->daddr - skb_network_header(skb); in ipv6_local_error()
369 serr->port = fl6->fl6_dport; in ipv6_local_error()
416 static inline bool ipv6_datagram_support_addr(struct sock_exterr_skb *serr) in ipv6_datagram_support_addr() argument
418 return serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6 || in ipv6_datagram_support_addr()
419 serr->ee.ee_origin == SO_EE_ORIGIN_ICMP || in ipv6_datagram_support_addr()
420 serr->ee.ee_origin == SO_EE_ORIGIN_LOCAL || serr->port; in ipv6_datagram_support_addr()
430 struct sock_exterr_skb *serr) in ip6_datagram_support_cmsg() argument
432 if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP || in ip6_datagram_support_cmsg()
433 serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6) in ip6_datagram_support_cmsg()
436 if (serr->ee.ee_origin == SO_EE_ORIGIN_LOCAL) in ip6_datagram_support_cmsg()
451 struct sock_exterr_skb *serr; in ipv6_recv_error() local
478 serr = SKB_EXT_ERR(skb); in ipv6_recv_error()
480 if (sin && ipv6_datagram_support_addr(serr)) { in ipv6_recv_error()
484 sin->sin6_port = serr->port; in ipv6_recv_error()
486 const struct ipv6hdr *ip6h = container_of((struct in6_addr *)(nh + serr->addr_offset), in ipv6_recv_error()
495 ipv6_addr_set_v4mapped(*(__be32 *)(nh + serr->addr_offset), in ipv6_recv_error()
502 memcpy(&errhdr.ee, &serr->ee, sizeof(struct sock_extended_err)); in ipv6_recv_error()
506 if (ip6_datagram_support_cmsg(skb, serr)) { in ipv6_recv_error()