xref: /linux-6.15/include/linux/errqueue.h (revision b2441318)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds #ifndef _LINUX_ERRQUEUE_H
31da177e4SLinus Torvalds #define _LINUX_ERRQUEUE_H 1
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds 
61da177e4SLinus Torvalds #include <net/ip.h>
7dfd56b8bSEric Dumazet #if IS_ENABLED(CONFIG_IPV6)
81da177e4SLinus Torvalds #include <linux/ipv6.h>
91da177e4SLinus Torvalds #endif
10607ca46eSDavid Howells #include <uapi/linux/errqueue.h>
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds #define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb))
131da177e4SLinus Torvalds 
14d94d9feeSEric Dumazet struct sock_exterr_skb {
151da177e4SLinus Torvalds 	union {
161da177e4SLinus Torvalds 		struct inet_skb_parm	h4;
17dfd56b8bSEric Dumazet #if IS_ENABLED(CONFIG_IPV6)
181da177e4SLinus Torvalds 		struct inet6_skb_parm	h6;
191da177e4SLinus Torvalds #endif
201da177e4SLinus Torvalds 	} header;
211da177e4SLinus Torvalds 	struct sock_extended_err	ee;
221da177e4SLinus Torvalds 	u16				addr_offset;
23b406313cSAl Viro 	__be16				port;
244ef1b286SSoheil Hassas Yeganeh 	u8				opt_stats:1,
254ef1b286SSoheil Hassas Yeganeh 					unused:7;
261da177e4SLinus Torvalds };
271da177e4SLinus Torvalds 
281da177e4SLinus Torvalds #endif
29