root/include/net/netns/xfrm.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   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          * Hash table to find appropriate SA towards given target (endpoint of
  36          * tunnel or destination of transport mode) allowed by selector.
  37          *
  38          * Main use is finding SA after policy selected tunnel or transport
  39          * mode. Also, it can be used by ah/esp icmp error handler to find
  40          * offending SA.
  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

/* [<][>][^][v][top][bottom][index][help] */