xref: /linux-6.15/include/linux/errqueue.h (revision 1da177e4)
1*1da177e4SLinus Torvalds #ifndef _LINUX_ERRQUEUE_H
2*1da177e4SLinus Torvalds #define _LINUX_ERRQUEUE_H 1
3*1da177e4SLinus Torvalds 
4*1da177e4SLinus Torvalds struct sock_extended_err
5*1da177e4SLinus Torvalds {
6*1da177e4SLinus Torvalds 	__u32	ee_errno;
7*1da177e4SLinus Torvalds 	__u8	ee_origin;
8*1da177e4SLinus Torvalds 	__u8	ee_type;
9*1da177e4SLinus Torvalds 	__u8	ee_code;
10*1da177e4SLinus Torvalds 	__u8	ee_pad;
11*1da177e4SLinus Torvalds 	__u32   ee_info;
12*1da177e4SLinus Torvalds 	__u32   ee_data;
13*1da177e4SLinus Torvalds };
14*1da177e4SLinus Torvalds 
15*1da177e4SLinus Torvalds #define SO_EE_ORIGIN_NONE	0
16*1da177e4SLinus Torvalds #define SO_EE_ORIGIN_LOCAL	1
17*1da177e4SLinus Torvalds #define SO_EE_ORIGIN_ICMP	2
18*1da177e4SLinus Torvalds #define SO_EE_ORIGIN_ICMP6	3
19*1da177e4SLinus Torvalds 
20*1da177e4SLinus Torvalds #define SO_EE_OFFENDER(ee)	((struct sockaddr*)((ee)+1))
21*1da177e4SLinus Torvalds 
22*1da177e4SLinus Torvalds #ifdef __KERNEL__
23*1da177e4SLinus Torvalds 
24*1da177e4SLinus Torvalds #include <linux/config.h>
25*1da177e4SLinus Torvalds #include <net/ip.h>
26*1da177e4SLinus Torvalds #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
27*1da177e4SLinus Torvalds #include <linux/ipv6.h>
28*1da177e4SLinus Torvalds #endif
29*1da177e4SLinus Torvalds 
30*1da177e4SLinus Torvalds #define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb))
31*1da177e4SLinus Torvalds 
32*1da177e4SLinus Torvalds struct sock_exterr_skb
33*1da177e4SLinus Torvalds {
34*1da177e4SLinus Torvalds 	union {
35*1da177e4SLinus Torvalds 		struct inet_skb_parm	h4;
36*1da177e4SLinus Torvalds #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
37*1da177e4SLinus Torvalds 		struct inet6_skb_parm	h6;
38*1da177e4SLinus Torvalds #endif
39*1da177e4SLinus Torvalds 	} header;
40*1da177e4SLinus Torvalds 	struct sock_extended_err	ee;
41*1da177e4SLinus Torvalds 	u16				addr_offset;
42*1da177e4SLinus Torvalds 	u16				port;
43*1da177e4SLinus Torvalds };
44*1da177e4SLinus Torvalds 
45*1da177e4SLinus Torvalds #endif
46*1da177e4SLinus Torvalds 
47*1da177e4SLinus Torvalds #endif
48