]>
Commit | Line | Data |
---|---|---|
77ab9cff MJ |
1 | /* |
2 | * connection tracking expectations. | |
3 | */ | |
4 | ||
5 | #ifndef _NF_CONNTRACK_EXPECT_H | |
6 | #define _NF_CONNTRACK_EXPECT_H | |
7 | #include <net/netfilter/nf_conntrack.h> | |
8 | ||
6823645d PM |
9 | extern struct list_head nf_ct_expect_list; |
10 | extern struct kmem_cache *nf_ct_expect_cachep; | |
54047320 | 11 | extern const struct file_operations exp_file_ops; |
77ab9cff MJ |
12 | |
13 | struct nf_conntrack_expect | |
14 | { | |
15 | /* Internal linked list (global expectation list) */ | |
16 | struct list_head list; | |
17 | ||
18 | /* We expect this tuple, with the following mask */ | |
19 | struct nf_conntrack_tuple tuple, mask; | |
20 | ||
21 | /* Function to call after setup and insertion */ | |
22 | void (*expectfn)(struct nf_conn *new, | |
23 | struct nf_conntrack_expect *this); | |
24 | ||
9457d851 PM |
25 | /* Helper to assign to new connection */ |
26 | struct nf_conntrack_helper *helper; | |
27 | ||
77ab9cff MJ |
28 | /* The conntrack of the master connection */ |
29 | struct nf_conn *master; | |
30 | ||
31 | /* Timer function; deletes the expectation. */ | |
32 | struct timer_list timeout; | |
33 | ||
34 | /* Usage count. */ | |
35 | atomic_t use; | |
36 | ||
37 | /* Unique ID */ | |
38 | unsigned int id; | |
39 | ||
40 | /* Flags */ | |
41 | unsigned int flags; | |
42 | ||
43 | #ifdef CONFIG_NF_NAT_NEEDED | |
f587de0e | 44 | __be32 saved_ip; |
77ab9cff MJ |
45 | /* This is the original per-proto part, used to map the |
46 | * expected connection the way the recipient expects. */ | |
5b1158e9 | 47 | union nf_conntrack_man_proto saved_proto; |
77ab9cff MJ |
48 | /* Direction relative to the master connection. */ |
49 | enum ip_conntrack_dir dir; | |
50 | #endif | |
51 | }; | |
52 | ||
53 | #define NF_CT_EXPECT_PERMANENT 0x1 | |
54 | ||
55 | ||
56 | struct nf_conntrack_expect * | |
6823645d | 57 | __nf_ct_expect_find(const struct nf_conntrack_tuple *tuple); |
77ab9cff MJ |
58 | |
59 | struct nf_conntrack_expect * | |
6823645d | 60 | nf_ct_expect_find_get(const struct nf_conntrack_tuple *tuple); |
77ab9cff MJ |
61 | |
62 | struct nf_conntrack_expect * | |
6823645d | 63 | nf_ct_find_expectation(const struct nf_conntrack_tuple *tuple); |
77ab9cff MJ |
64 | |
65 | void nf_ct_unlink_expect(struct nf_conntrack_expect *exp); | |
66 | void nf_ct_remove_expectations(struct nf_conn *ct); | |
6823645d | 67 | void nf_ct_unexpect_related(struct nf_conntrack_expect *exp); |
77ab9cff MJ |
68 | |
69 | /* Allocate space for an expectation: this is mandatory before calling | |
6823645d PM |
70 | nf_ct_expect_related. You will have to call put afterwards. */ |
71 | struct nf_conntrack_expect *nf_ct_expect_alloc(struct nf_conn *me); | |
72 | void nf_ct_expect_init(struct nf_conntrack_expect *, int, | |
73 | union nf_conntrack_address *, | |
74 | union nf_conntrack_address *, | |
75 | u_int8_t, __be16 *, __be16 *); | |
76 | void nf_ct_expect_put(struct nf_conntrack_expect *exp); | |
77 | int nf_ct_expect_related(struct nf_conntrack_expect *expect); | |
77ab9cff MJ |
78 | |
79 | #endif /*_NF_CONNTRACK_EXPECT_H*/ | |
80 |