]>
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 | ||
9 | extern struct list_head nf_conntrack_expect_list; | |
10 | extern kmem_cache_t *nf_conntrack_expect_cachep; | |
11 | extern struct file_operations exp_file_ops; | |
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 | |
44 | /* This is the original per-proto part, used to map the | |
45 | * expected connection the way the recipient expects. */ | |
5b1158e9 | 46 | union nf_conntrack_man_proto saved_proto; |
77ab9cff MJ |
47 | /* Direction relative to the master connection. */ |
48 | enum ip_conntrack_dir dir; | |
49 | #endif | |
50 | }; | |
51 | ||
52 | #define NF_CT_EXPECT_PERMANENT 0x1 | |
53 | ||
54 | ||
55 | struct nf_conntrack_expect * | |
56 | __nf_conntrack_expect_find(const struct nf_conntrack_tuple *tuple); | |
57 | ||
58 | struct nf_conntrack_expect * | |
468ec44b | 59 | nf_conntrack_expect_find_get(const struct nf_conntrack_tuple *tuple); |
77ab9cff MJ |
60 | |
61 | struct nf_conntrack_expect * | |
62 | find_expectation(const struct nf_conntrack_tuple *tuple); | |
63 | ||
64 | void nf_ct_unlink_expect(struct nf_conntrack_expect *exp); | |
65 | void nf_ct_remove_expectations(struct nf_conn *ct); | |
66 | void nf_conntrack_unexpect_related(struct nf_conntrack_expect *exp); | |
67 | ||
68 | /* Allocate space for an expectation: this is mandatory before calling | |
69 | nf_conntrack_expect_related. You will have to call put afterwards. */ | |
70 | struct nf_conntrack_expect *nf_conntrack_expect_alloc(struct nf_conn *me); | |
d6a9b650 PM |
71 | void nf_conntrack_expect_init(struct nf_conntrack_expect *, int, |
72 | union nf_conntrack_address *, | |
73 | union nf_conntrack_address *, | |
74 | u_int8_t, __be16 *, __be16 *); | |
77ab9cff MJ |
75 | void nf_conntrack_expect_put(struct nf_conntrack_expect *exp); |
76 | int nf_conntrack_expect_related(struct nf_conntrack_expect *expect); | |
77 | ||
78 | #endif /*_NF_CONNTRACK_EXPECT_H*/ | |
79 |