]>
Commit | Line | Data |
---|---|---|
1 | #ifndef __NETNS_XFRM_H | |
2 | #define __NETNS_XFRM_H | |
3 | ||
4 | #include <linux/list.h> | |
5 | #include <linux/wait.h> | |
6 | #include <linux/workqueue.h> | |
7 | #include <linux/xfrm.h> | |
8 | #include <net/dst_ops.h> | |
9 | #include <net/flowcache.h> | |
10 | ||
11 | struct ctl_table_header; | |
12 | ||
13 | struct xfrm_policy_hash { | |
14 | struct hlist_head *table; | |
15 | unsigned int hmask; | |
16 | }; | |
17 | ||
18 | struct netns_xfrm { | |
19 | struct list_head state_all; | |
20 | /* | |
21 | * Hash table to find appropriate SA towards given target (endpoint of | |
22 | * tunnel or destination of transport mode) allowed by selector. | |
23 | * | |
24 | * Main use is finding SA after policy selected tunnel or transport | |
25 | * mode. Also, it can be used by ah/esp icmp error handler to find | |
26 | * offending SA. | |
27 | */ | |
28 | struct hlist_head *state_bydst; | |
29 | struct hlist_head *state_bysrc; | |
30 | struct hlist_head *state_byspi; | |
31 | unsigned int state_hmask; | |
32 | unsigned int state_num; | |
33 | struct work_struct state_hash_work; | |
34 | struct hlist_head state_gc_list; | |
35 | struct work_struct state_gc_work; | |
36 | ||
37 | struct list_head policy_all; | |
38 | struct hlist_head *policy_byidx; | |
39 | unsigned int policy_idx_hmask; | |
40 | struct hlist_head policy_inexact[XFRM_POLICY_MAX * 2]; | |
41 | struct xfrm_policy_hash policy_bydst[XFRM_POLICY_MAX * 2]; | |
42 | unsigned int policy_count[XFRM_POLICY_MAX * 2]; | |
43 | struct work_struct policy_hash_work; | |
44 | ||
45 | ||
46 | struct sock *nlsk; | |
47 | struct sock *nlsk_stash; | |
48 | ||
49 | u32 sysctl_aevent_etime; | |
50 | u32 sysctl_aevent_rseqth; | |
51 | int sysctl_larval_drop; | |
52 | u32 sysctl_acq_expires; | |
53 | #ifdef CONFIG_SYSCTL | |
54 | struct ctl_table_header *sysctl_hdr; | |
55 | #endif | |
56 | ||
57 | struct dst_ops xfrm4_dst_ops; | |
58 | #if IS_ENABLED(CONFIG_IPV6) | |
59 | struct dst_ops xfrm6_dst_ops; | |
60 | #endif | |
61 | spinlock_t xfrm_state_lock; | |
62 | rwlock_t xfrm_policy_lock; | |
63 | struct mutex xfrm_cfg_mutex; | |
64 | ||
65 | /* flow cache part */ | |
66 | struct flow_cache flow_cache_global; | |
67 | atomic_t flow_cache_genid; | |
68 | struct list_head flow_cache_gc_list; | |
69 | spinlock_t flow_cache_gc_lock; | |
70 | struct work_struct flow_cache_gc_work; | |
71 | struct work_struct flow_cache_flush_work; | |
72 | struct mutex flow_flush_sem; | |
73 | }; | |
74 | ||
75 | #endif |