1*607ca46eSDavid Howells #ifndef _UAPI_LINUX_ERRQUEUE_H 2*607ca46eSDavid Howells #define _UAPI_LINUX_ERRQUEUE_H 3*607ca46eSDavid Howells 4*607ca46eSDavid Howells #include <linux/types.h> 5*607ca46eSDavid Howells 6*607ca46eSDavid Howells struct sock_extended_err { 7*607ca46eSDavid Howells __u32 ee_errno; 8*607ca46eSDavid Howells __u8 ee_origin; 9*607ca46eSDavid Howells __u8 ee_type; 10*607ca46eSDavid Howells __u8 ee_code; 11*607ca46eSDavid Howells __u8 ee_pad; 12*607ca46eSDavid Howells __u32 ee_info; 13*607ca46eSDavid Howells __u32 ee_data; 14*607ca46eSDavid Howells }; 15*607ca46eSDavid Howells 16*607ca46eSDavid Howells #define SO_EE_ORIGIN_NONE 0 17*607ca46eSDavid Howells #define SO_EE_ORIGIN_LOCAL 1 18*607ca46eSDavid Howells #define SO_EE_ORIGIN_ICMP 2 19*607ca46eSDavid Howells #define SO_EE_ORIGIN_ICMP6 3 20*607ca46eSDavid Howells #define SO_EE_ORIGIN_TXSTATUS 4 21*607ca46eSDavid Howells #define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS 22*607ca46eSDavid Howells 23*607ca46eSDavid Howells #define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) 24*607ca46eSDavid Howells 25*607ca46eSDavid Howells 26*607ca46eSDavid Howells #endif /* _UAPI_LINUX_ERRQUEUE_H */ 27