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        __u32   ee_errno;       
   8        __u8    ee_origin;
   9        __u8    ee_type;
  10        __u8    ee_code;
  11        __u8    ee_pad;
  12        __u32   ee_info;
  13        __u32   ee_data;
  14};
  15
  16#define SO_EE_ORIGIN_NONE       0
  17#define SO_EE_ORIGIN_LOCAL      1
  18#define SO_EE_ORIGIN_ICMP       2
  19#define SO_EE_ORIGIN_ICMP6      3
  20#define SO_EE_ORIGIN_TXSTATUS   4
  21#define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
  22
  23#define SO_EE_OFFENDER(ee)      ((struct sockaddr*)((ee)+1))
  24
  25#ifdef __KERNEL__
  26
  27#include <net/ip.h>
  28#if IS_ENABLED(CONFIG_IPV6)
  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        union {
  36                struct inet_skb_parm    h4;
  37#if IS_ENABLED(CONFIG_IPV6)
  38                struct inet6_skb_parm   h6;
  39#endif
  40        } header;
  41        struct sock_extended_err        ee;
  42        u16                             addr_offset;
  43        __be16                          port;
  44};
  45
  46#endif
  47
  48#endif
  49