1#ifndef _IP_NAT_HELPER_H
2#define _IP_NAT_HELPER_H
3
4
5#include <linux/netfilter_ipv4/ip_conntrack.h>
6
7struct sk_buff;
8
9
10
11#define IP_NAT_HELPER_F_ALWAYS 0x01
12
13#define IP_NAT_HELPER_F_STANDALONE 0x02
14
15struct ip_nat_helper
16{
17 struct list_head list;
18
19 const char *name;
20 unsigned char flags;
21 struct module *me;
22
23
24 struct ip_conntrack_tuple tuple;
25 struct ip_conntrack_tuple mask;
26
27
28 unsigned int (*help)(struct ip_conntrack *ct,
29 struct ip_conntrack_expect *exp,
30 struct ip_nat_info *info,
31 enum ip_conntrack_info ctinfo,
32 unsigned int hooknum,
33 struct sk_buff **pskb);
34
35
36 unsigned int (*expect)(struct sk_buff **pskb,
37 unsigned int hooknum,
38 struct ip_conntrack *ct,
39 struct ip_nat_info *info);
40};
41
42extern struct list_head helpers;
43
44extern int ip_nat_helper_register(struct ip_nat_helper *me);
45extern void ip_nat_helper_unregister(struct ip_nat_helper *me);
46extern int ip_nat_mangle_tcp_packet(struct sk_buff **skb,
47 struct ip_conntrack *ct,
48 enum ip_conntrack_info ctinfo,
49 unsigned int match_offset,
50 unsigned int match_len,
51 char *rep_buffer,
52 unsigned int rep_len);
53extern int ip_nat_mangle_udp_packet(struct sk_buff **skb,
54 struct ip_conntrack *ct,
55 enum ip_conntrack_info ctinfo,
56 unsigned int match_offset,
57 unsigned int match_len,
58 char *rep_buffer,
59 unsigned int rep_len);
60extern int ip_nat_seq_adjust(struct sk_buff *skb,
61 struct ip_conntrack *ct,
62 enum ip_conntrack_info ctinfo);
63extern void ip_nat_delete_sack(struct sk_buff *skb);
64#endif
65