1 
   2 #ifndef __NETNS_XFRM_H
   3 #define __NETNS_XFRM_H
   4 
   5 #include <linux/list.h>
   6 #include <linux/wait.h>
   7 #include <linux/workqueue.h>
   8 #include <linux/rhashtable-types.h>
   9 #include <linux/xfrm.h>
  10 #include <net/dst_ops.h>
  11 
  12 struct ctl_table_header;
  13 
  14 struct xfrm_policy_hash {
  15         struct hlist_head       __rcu *table;
  16         unsigned int            hmask;
  17         u8                      dbits4;
  18         u8                      sbits4;
  19         u8                      dbits6;
  20         u8                      sbits6;
  21 };
  22 
  23 struct xfrm_policy_hthresh {
  24         struct work_struct      work;
  25         seqlock_t               lock;
  26         u8                      lbits4;
  27         u8                      rbits4;
  28         u8                      lbits6;
  29         u8                      rbits6;
  30 };
  31 
  32 struct netns_xfrm {
  33         struct list_head        state_all;
  34         
  35 
  36 
  37 
  38 
  39 
  40 
  41 
  42         struct hlist_head       __rcu *state_bydst;
  43         struct hlist_head       __rcu *state_bysrc;
  44         struct hlist_head       __rcu *state_byspi;
  45         unsigned int            state_hmask;
  46         unsigned int            state_num;
  47         struct work_struct      state_hash_work;
  48 
  49         struct list_head        policy_all;
  50         struct hlist_head       *policy_byidx;
  51         unsigned int            policy_idx_hmask;
  52         struct hlist_head       policy_inexact[XFRM_POLICY_MAX];
  53         struct xfrm_policy_hash policy_bydst[XFRM_POLICY_MAX];
  54         unsigned int            policy_count[XFRM_POLICY_MAX * 2];
  55         struct work_struct      policy_hash_work;
  56         struct xfrm_policy_hthresh policy_hthresh;
  57         struct list_head        inexact_bins;
  58 
  59 
  60         struct sock             *nlsk;
  61         struct sock             *nlsk_stash;
  62 
  63         u32                     sysctl_aevent_etime;
  64         u32                     sysctl_aevent_rseqth;
  65         int                     sysctl_larval_drop;
  66         u32                     sysctl_acq_expires;
  67 #ifdef CONFIG_SYSCTL
  68         struct ctl_table_header *sysctl_hdr;
  69 #endif
  70 
  71         struct dst_ops          xfrm4_dst_ops;
  72 #if IS_ENABLED(CONFIG_IPV6)
  73         struct dst_ops          xfrm6_dst_ops;
  74 #endif
  75         spinlock_t xfrm_state_lock;
  76         spinlock_t xfrm_policy_lock;
  77         struct mutex xfrm_cfg_mutex;
  78 };
  79 
  80 #endif