1 #ifndef _NF_NAT_L3PROTO_H
2 #define _NF_NAT_L3PROTO_H
5 struct nf_nat_l3proto {
8 bool (*in_range)(const struct nf_conntrack_tuple *t,
9 const struct nf_nat_range *range);
11 u32 (*secure_port)(const struct nf_conntrack_tuple *t, __be16);
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);
19 void (*csum_update)(struct sk_buff *skb, unsigned int iphdroff,
21 const struct nf_conntrack_tuple *t,
22 enum nf_nat_manip_type maniptype);
24 void (*csum_recalc)(struct sk_buff *skb, u8 proto,
25 void *data, __sum16 *check,
26 int datalen, int oldlen);
28 void (*decode_session)(struct sk_buff *skb,
29 const struct nf_conn *ct,
30 enum ip_conntrack_dir dir,
31 unsigned long statusbit,
34 int (*nlattr_to_range)(struct nlattr *tb[],
35 struct nf_nat_range *range);
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);
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);
46 unsigned int nf_nat_ipv4_in(void *priv, struct sk_buff *skb,
47 const struct nf_hook_state *state,
48 unsigned int (*do_chain)(void *priv,
50 const struct nf_hook_state *state,
53 unsigned int nf_nat_ipv4_out(void *priv, struct sk_buff *skb,
54 const struct nf_hook_state *state,
55 unsigned int (*do_chain)(void *priv,
57 const struct nf_hook_state *state,
60 unsigned int nf_nat_ipv4_local_fn(void *priv,
62 const struct nf_hook_state *state,
63 unsigned int (*do_chain)(void *priv,
65 const struct nf_hook_state *state,
68 unsigned int nf_nat_ipv4_fn(void *priv, struct sk_buff *skb,
69 const struct nf_hook_state *state,
70 unsigned int (*do_chain)(void *priv,
72 const struct nf_hook_state *state,
75 int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct,
76 enum ip_conntrack_info ctinfo,
77 unsigned int hooknum, unsigned int hdrlen);
79 unsigned int nf_nat_ipv6_in(void *priv, struct sk_buff *skb,
80 const struct nf_hook_state *state,
81 unsigned int (*do_chain)(void *priv,
83 const struct nf_hook_state *state,
86 unsigned int nf_nat_ipv6_out(void *priv, struct sk_buff *skb,
87 const struct nf_hook_state *state,
88 unsigned int (*do_chain)(void *priv,
90 const struct nf_hook_state *state,
93 unsigned int nf_nat_ipv6_local_fn(void *priv,
95 const struct nf_hook_state *state,
96 unsigned int (*do_chain)(void *priv,
98 const struct nf_hook_state *state,
101 unsigned int nf_nat_ipv6_fn(void *priv, struct sk_buff *skb,
102 const struct nf_hook_state *state,
103 unsigned int (*do_chain)(void *priv,
105 const struct nf_hook_state *state,
106 struct nf_conn *ct));
108 #endif /* _NF_NAT_L3PROTO_H */