Line data Source code
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 :
10 : struct ctl_table_header;
11 :
12 : struct xfrm_policy_hash {
13 : struct hlist_head *table;
14 : unsigned int hmask;
15 : };
16 :
17 : struct netns_xfrm {
18 : struct list_head state_all;
19 : /*
20 : * Hash table to find appropriate SA towards given target (endpoint of
21 : * tunnel or destination of transport mode) allowed by selector.
22 : *
23 : * Main use is finding SA after policy selected tunnel or transport
24 : * mode. Also, it can be used by ah/esp icmp error handler to find
25 : * offending SA.
26 : */
27 : struct hlist_head *state_bydst;
28 : struct hlist_head *state_bysrc;
29 : struct hlist_head *state_byspi;
30 : unsigned int state_hmask;
31 : unsigned int state_num;
32 : struct work_struct state_hash_work;
33 : struct hlist_head state_gc_list;
34 : struct work_struct state_gc_work;
35 :
36 : wait_queue_head_t km_waitq;
37 :
38 : struct list_head policy_all;
39 : struct hlist_head *policy_byidx;
40 : unsigned int policy_idx_hmask;
41 : struct hlist_head policy_inexact[XFRM_POLICY_MAX * 2];
42 : struct xfrm_policy_hash policy_bydst[XFRM_POLICY_MAX * 2];
43 : unsigned int policy_count[XFRM_POLICY_MAX * 2];
44 : struct work_struct policy_hash_work;
45 :
46 : struct dst_ops xfrm4_dst_ops;
47 : #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
48 : struct dst_ops xfrm6_dst_ops;
49 : #endif
50 :
51 : struct sock *nlsk;
52 : struct sock *nlsk_stash;
53 :
54 : u32 sysctl_aevent_etime;
55 : u32 sysctl_aevent_rseqth;
56 : int sysctl_larval_drop;
57 : u32 sysctl_acq_expires;
58 : #ifdef CONFIG_SYSCTL
59 : struct ctl_table_header *sysctl_hdr;
60 : #endif
61 1 : };
62 :
63 : #endif
|