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