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 */