xref: /linux-6.15/include/linux/errqueue.h (revision cb9eff09)
11da177e4SLinus Torvalds #ifndef _LINUX_ERRQUEUE_H
21da177e4SLinus Torvalds #define _LINUX_ERRQUEUE_H 1
31da177e4SLinus Torvalds 
493c1c0e3SJaswinder Singh Rajput #include <linux/types.h>
593c1c0e3SJaswinder Singh Rajput 
61da177e4SLinus Torvalds struct sock_extended_err
71da177e4SLinus Torvalds {
81da177e4SLinus Torvalds 	__u32	ee_errno;
91da177e4SLinus Torvalds 	__u8	ee_origin;
101da177e4SLinus Torvalds 	__u8	ee_type;
111da177e4SLinus Torvalds 	__u8	ee_code;
121da177e4SLinus Torvalds 	__u8	ee_pad;
131da177e4SLinus Torvalds 	__u32   ee_info;
141da177e4SLinus Torvalds 	__u32   ee_data;
151da177e4SLinus Torvalds };
161da177e4SLinus Torvalds 
171da177e4SLinus Torvalds #define SO_EE_ORIGIN_NONE	0
181da177e4SLinus Torvalds #define SO_EE_ORIGIN_LOCAL	1
191da177e4SLinus Torvalds #define SO_EE_ORIGIN_ICMP	2
201da177e4SLinus Torvalds #define SO_EE_ORIGIN_ICMP6	3
21*cb9eff09SPatrick Ohly #define SO_EE_ORIGIN_TIMESTAMPING 4
221da177e4SLinus Torvalds 
231da177e4SLinus Torvalds #define SO_EE_OFFENDER(ee)	((struct sockaddr*)((ee)+1))
241da177e4SLinus Torvalds 
251da177e4SLinus Torvalds #ifdef __KERNEL__
261da177e4SLinus Torvalds 
271da177e4SLinus Torvalds #include <net/ip.h>
281da177e4SLinus Torvalds #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
291da177e4SLinus Torvalds #include <linux/ipv6.h>
301da177e4SLinus Torvalds #endif
311da177e4SLinus Torvalds 
321da177e4SLinus Torvalds #define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb))
331da177e4SLinus Torvalds 
341da177e4SLinus Torvalds struct sock_exterr_skb
351da177e4SLinus Torvalds {
361da177e4SLinus Torvalds 	union {
371da177e4SLinus Torvalds 		struct inet_skb_parm	h4;
381da177e4SLinus Torvalds #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
391da177e4SLinus Torvalds 		struct inet6_skb_parm	h6;
401da177e4SLinus Torvalds #endif
411da177e4SLinus Torvalds 	} header;
421da177e4SLinus Torvalds 	struct sock_extended_err	ee;
431da177e4SLinus Torvalds 	u16				addr_offset;
44b406313cSAl Viro 	__be16				port;
451da177e4SLinus Torvalds };
461da177e4SLinus Torvalds 
471da177e4SLinus Torvalds #endif
481da177e4SLinus Torvalds 
491da177e4SLinus Torvalds #endif
50