1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _LINUX_ERRQUEUE_H 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _LINUX_ERRQUEUE_H 1 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct sock_extended_err 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 ee_errno; 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 ee_origin; 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 ee_type; 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 ee_code; 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 ee_pad; 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 ee_info; 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 ee_data; 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SO_EE_ORIGIN_NONE 0 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SO_EE_ORIGIN_LOCAL 1 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SO_EE_ORIGIN_ICMP 2 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SO_EE_ORIGIN_ICMP6 3 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__ 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <net/ip.h> 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/ipv6.h> 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SKB_EXT_ERR(skb) ((struct sock_exterr_skb *) ((skb)->cb)) 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct sock_exterr_skb 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru union { 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inet_skb_parm h4; 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inet6_skb_parm h6; 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } header; 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct sock_extended_err ee; 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u16 addr_offset; 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u16 port; 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 47