blob: 02bb6c29dc3ddbab8c656feb3631a17dd105d748 [file] [log] [blame]
Jozsef Kadlecsik5b1158e2006-12-02 22:07:13 -08001#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. */
Patrick McHardy010c0b92010-02-11 12:27:09 +010010extern 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
Herbert Xu3db05fe2007-10-15 00:53:15 -070031extern int nf_nat_mangle_udp_packet(struct sk_buff *skb,
Jozsef Kadlecsik5b1158e2006-12-02 22:07:13 -080032 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);
Patrick McHardy010c0b92010-02-11 12:27:09 +010038
39extern void nf_nat_set_seq_adjust(struct nf_conn *ct,
40 enum ip_conntrack_info ctinfo,
41 __be32 seq, s16 off);
Herbert Xu3db05fe2007-10-15 00:53:15 -070042extern int nf_nat_seq_adjust(struct sk_buff *skb,
Jozsef Kadlecsik5b1158e2006-12-02 22:07:13 -080043 struct nf_conn *ct,
44 enum ip_conntrack_info ctinfo);
Patrick McHardydd13b012008-04-14 11:15:52 +020045extern int (*nf_nat_seq_adjust_hook)(struct sk_buff *skb,
46 struct nf_conn *ct,
47 enum ip_conntrack_info ctinfo);
Jozsef Kadlecsik5b1158e2006-12-02 22:07:13 -080048
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);
Jozsef Kadlecsikf9dd09c2009-11-06 00:43:42 -080053
54extern s16 nf_nat_get_offset(const struct nf_conn *ct,
55 enum ip_conntrack_dir dir,
56 u32 seq);
Jozsef Kadlecsik5b1158e2006-12-02 22:07:13 -080057#endif