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