]> bbs.cooldavid.org Git - net-next-2.6.git/blame - include/net/netfilter/nf_nat_helper.h
netfilter: nf_nat: support mangling a single TCP packet multiple times
[net-next-2.6.git] / include / net / netfilter / nf_nat_helper.h
CommitLineData
5b1158e9
JK
1#ifndef _NF_NAT_HELPER_H
2#define _NF_NAT_HELPER_H
3/* NAT protocol helper routines. */
4
5#include <net/netfilter/nf_conntrack.h>
6
7struct sk_buff;
8
9/* These return true or false. */
010c0b9f
PM
10extern int __nf_nat_mangle_tcp_packet(struct sk_buff *skb,
11 struct nf_conn *ct,
12 enum ip_conntrack_info ctinfo,
13 unsigned int match_offset,
14 unsigned int match_len,
15 const char *rep_buffer,
16 unsigned int rep_len, bool adjust);
17
18static inline int nf_nat_mangle_tcp_packet(struct sk_buff *skb,
19 struct nf_conn *ct,
20 enum ip_conntrack_info ctinfo,
21 unsigned int match_offset,
22 unsigned int match_len,
23 const char *rep_buffer,
24 unsigned int rep_len)
25{
26 return __nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
27 match_offset, match_len,
28 rep_buffer, rep_len, true);
29}
30
3db05fea 31extern int nf_nat_mangle_udp_packet(struct sk_buff *skb,
5b1158e9
JK
32 struct nf_conn *ct,
33 enum ip_conntrack_info ctinfo,
34 unsigned int match_offset,
35 unsigned int match_len,
36 const char *rep_buffer,
37 unsigned int rep_len);
010c0b9f
PM
38
39extern void nf_nat_set_seq_adjust(struct nf_conn *ct,
40 enum ip_conntrack_info ctinfo,
41 __be32 seq, s16 off);
3db05fea 42extern int nf_nat_seq_adjust(struct sk_buff *skb,
5b1158e9
JK
43 struct nf_conn *ct,
44 enum ip_conntrack_info ctinfo);
dd13b010
PM
45extern int (*nf_nat_seq_adjust_hook)(struct sk_buff *skb,
46 struct nf_conn *ct,
47 enum ip_conntrack_info ctinfo);
5b1158e9
JK
48
49/* Setup NAT on this expected conntrack so it follows master, but goes
50 * to port ct->master->saved_proto. */
51extern void nf_nat_follow_master(struct nf_conn *ct,
52 struct nf_conntrack_expect *this);
f9dd09c7
JK
53
54extern s16 nf_nat_get_offset(const struct nf_conn *ct,
55 enum ip_conntrack_dir dir,
56 u32 seq);
5b1158e9 57#endif