xref: /linux-6.15/include/linux/errqueue.h (revision 4ef1b286)
11da177e4SLinus Torvalds #ifndef _LINUX_ERRQUEUE_H
21da177e4SLinus Torvalds #define _LINUX_ERRQUEUE_H 1
31da177e4SLinus Torvalds 
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds #include <net/ip.h>
6dfd56b8bSEric Dumazet #if IS_ENABLED(CONFIG_IPV6)
71da177e4SLinus Torvalds #include <linux/ipv6.h>
81da177e4SLinus Torvalds #endif
9607ca46eSDavid Howells #include <uapi/linux/errqueue.h>
101da177e4SLinus Torvalds 
111da177e4SLinus Torvalds #define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb))
121da177e4SLinus Torvalds 
13d94d9feeSEric Dumazet struct sock_exterr_skb {
141da177e4SLinus Torvalds 	union {
151da177e4SLinus Torvalds 		struct inet_skb_parm	h4;
16dfd56b8bSEric Dumazet #if IS_ENABLED(CONFIG_IPV6)
171da177e4SLinus Torvalds 		struct inet6_skb_parm	h6;
181da177e4SLinus Torvalds #endif
191da177e4SLinus Torvalds 	} header;
201da177e4SLinus Torvalds 	struct sock_extended_err	ee;
211da177e4SLinus Torvalds 	u16				addr_offset;
22b406313cSAl Viro 	__be16				port;
23*4ef1b286SSoheil Hassas Yeganeh 	u8				opt_stats:1,
24*4ef1b286SSoheil Hassas Yeganeh 					unused:7;
251da177e4SLinus Torvalds };
261da177e4SLinus Torvalds 
271da177e4SLinus Torvalds #endif
28