Commit | Line | Data |
---|---|---|
c7232c99 PM |
1 | #ifndef _NF_NAT_L3PROTO_H |
2 | #define _NF_NAT_L3PROTO_H | |
3 | ||
4 | struct nf_nat_l4proto; | |
5 | struct nf_nat_l3proto { | |
6 | u8 l3proto; | |
7 | ||
8 | bool (*in_range)(const struct nf_conntrack_tuple *t, | |
9 | const struct nf_nat_range *range); | |
10 | ||
11 | u32 (*secure_port)(const struct nf_conntrack_tuple *t, __be16); | |
12 | ||
13 | bool (*manip_pkt)(struct sk_buff *skb, | |
14 | unsigned int iphdroff, | |
15 | const struct nf_nat_l4proto *l4proto, | |
16 | const struct nf_conntrack_tuple *target, | |
17 | enum nf_nat_manip_type maniptype); | |
18 | ||
19 | void (*csum_update)(struct sk_buff *skb, unsigned int iphdroff, | |
20 | __sum16 *check, | |
21 | const struct nf_conntrack_tuple *t, | |
22 | enum nf_nat_manip_type maniptype); | |
23 | ||
24 | void (*csum_recalc)(struct sk_buff *skb, u8 proto, | |
25 | void *data, __sum16 *check, | |
26 | int datalen, int oldlen); | |
27 | ||
28 | void (*decode_session)(struct sk_buff *skb, | |
29 | const struct nf_conn *ct, | |
30 | enum ip_conntrack_dir dir, | |
31 | unsigned long statusbit, | |
32 | struct flowi *fl); | |
33 | ||
34 | int (*nlattr_to_range)(struct nlattr *tb[], | |
35 | struct nf_nat_range *range); | |
36 | }; | |
37 | ||
4e77be46 JP |
38 | int nf_nat_l3proto_register(const struct nf_nat_l3proto *); |
39 | void nf_nat_l3proto_unregister(const struct nf_nat_l3proto *); | |
40 | const struct nf_nat_l3proto *__nf_nat_l3proto_find(u8 l3proto); | |
41 | ||
42 | int nf_nat_icmp_reply_translation(struct sk_buff *skb, struct nf_conn *ct, | |
43 | enum ip_conntrack_info ctinfo, | |
44 | unsigned int hooknum); | |
45 | int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct, | |
46 | enum ip_conntrack_info ctinfo, | |
47 | unsigned int hooknum, unsigned int hdrlen); | |
c7232c99 PM |
48 | |
49 | #endif /* _NF_NAT_L3PROTO_H */ |