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