Lines Matching refs:serr
310 struct sock_exterr_skb *serr; in ipv6_icmp_error() local
321 serr = SKB_EXT_ERR(skb); in ipv6_icmp_error()
322 serr->ee.ee_errno = err; in ipv6_icmp_error()
323 serr->ee.ee_origin = SO_EE_ORIGIN_ICMP6; in ipv6_icmp_error()
324 serr->ee.ee_type = icmph->icmp6_type; in ipv6_icmp_error()
325 serr->ee.ee_code = icmph->icmp6_code; in ipv6_icmp_error()
326 serr->ee.ee_pad = 0; in ipv6_icmp_error()
327 serr->ee.ee_info = info; in ipv6_icmp_error()
328 serr->ee.ee_data = 0; in ipv6_icmp_error()
329 serr->addr_offset = (u8 *)&(((struct ipv6hdr *)(icmph + 1))->daddr) - in ipv6_icmp_error()
331 serr->port = port; in ipv6_icmp_error()
336 ipv6_icmp_error_rfc4884(skb, &serr->ee.ee_rfc4884); in ipv6_icmp_error()
347 struct sock_exterr_skb *serr; in ipv6_local_error() local
366 serr = SKB_EXT_ERR(skb); in ipv6_local_error()
367 serr->ee.ee_errno = err; in ipv6_local_error()
368 serr->ee.ee_origin = SO_EE_ORIGIN_LOCAL; in ipv6_local_error()
369 serr->ee.ee_type = 0; in ipv6_local_error()
370 serr->ee.ee_code = 0; in ipv6_local_error()
371 serr->ee.ee_pad = 0; in ipv6_local_error()
372 serr->ee.ee_info = info; in ipv6_local_error()
373 serr->ee.ee_data = 0; in ipv6_local_error()
374 serr->addr_offset = (u8 *)&iph->daddr - skb_network_header(skb); in ipv6_local_error()
375 serr->port = fl6->fl6_dport; in ipv6_local_error()
422 static inline bool ipv6_datagram_support_addr(struct sock_exterr_skb *serr) in ipv6_datagram_support_addr() argument
424 return serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6 || in ipv6_datagram_support_addr()
425 serr->ee.ee_origin == SO_EE_ORIGIN_ICMP || in ipv6_datagram_support_addr()
426 serr->ee.ee_origin == SO_EE_ORIGIN_LOCAL || serr->port; in ipv6_datagram_support_addr()
436 struct sock_exterr_skb *serr) in ip6_datagram_support_cmsg() argument
438 if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP || in ip6_datagram_support_cmsg()
439 serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6) in ip6_datagram_support_cmsg()
442 if (serr->ee.ee_origin == SO_EE_ORIGIN_LOCAL) in ip6_datagram_support_cmsg()
457 struct sock_exterr_skb *serr; in ipv6_recv_error() local
484 serr = SKB_EXT_ERR(skb); in ipv6_recv_error()
486 if (sin && ipv6_datagram_support_addr(serr)) { in ipv6_recv_error()
490 sin->sin6_port = serr->port; in ipv6_recv_error()
492 const struct ipv6hdr *ip6h = container_of((struct in6_addr *)(nh + serr->addr_offset), in ipv6_recv_error()
501 ipv6_addr_set_v4mapped(*(__be32 *)(nh + serr->addr_offset), in ipv6_recv_error()
508 memcpy(&errhdr.ee, &serr->ee, sizeof(struct sock_extended_err)); in ipv6_recv_error()
512 if (ip6_datagram_support_cmsg(skb, serr)) { in ipv6_recv_error()