xref: /linux-6.15/include/linux/errqueue.h (revision dfd56b8b)
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 
6d94d9feeSEric Dumazet struct sock_extended_err {
71da177e4SLinus Torvalds 	__u32	ee_errno;
81da177e4SLinus Torvalds 	__u8	ee_origin;
91da177e4SLinus Torvalds 	__u8	ee_type;
101da177e4SLinus Torvalds 	__u8	ee_code;
111da177e4SLinus Torvalds 	__u8	ee_pad;
121da177e4SLinus Torvalds 	__u32   ee_info;
131da177e4SLinus Torvalds 	__u32   ee_data;
141da177e4SLinus Torvalds };
151da177e4SLinus Torvalds 
161da177e4SLinus Torvalds #define SO_EE_ORIGIN_NONE	0
171da177e4SLinus Torvalds #define SO_EE_ORIGIN_LOCAL	1
181da177e4SLinus Torvalds #define SO_EE_ORIGIN_ICMP	2
191da177e4SLinus Torvalds #define SO_EE_ORIGIN_ICMP6	3
206e3e939fSJohannes Berg #define SO_EE_ORIGIN_TXSTATUS	4
216e3e939fSJohannes Berg #define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
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>
28*dfd56b8bSEric Dumazet #if IS_ENABLED(CONFIG_IPV6)
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 
34d94d9feeSEric Dumazet struct sock_exterr_skb {
351da177e4SLinus Torvalds 	union {
361da177e4SLinus Torvalds 		struct inet_skb_parm	h4;
37*dfd56b8bSEric Dumazet #if IS_ENABLED(CONFIG_IPV6)
381da177e4SLinus Torvalds 		struct inet6_skb_parm	h6;
391da177e4SLinus Torvalds #endif
401da177e4SLinus Torvalds 	} header;
411da177e4SLinus Torvalds 	struct sock_extended_err	ee;
421da177e4SLinus Torvalds 	u16				addr_offset;
43b406313cSAl Viro 	__be16				port;
441da177e4SLinus Torvalds };
451da177e4SLinus Torvalds 
461da177e4SLinus Torvalds #endif
471da177e4SLinus Torvalds 
481da177e4SLinus Torvalds #endif
49