Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
nf_nat_l3proto.h
Go to the documentation of this file.
1 #ifndef _NF_NAT_L3PROTO_H
2 #define _NF_NAT_L3PROTO_H
3 
4 struct nf_nat_l4proto;
5 struct nf_nat_l3proto {
7 
8  bool (*in_range)(const struct nf_conntrack_tuple *t,
9  const struct nf_nat_range *range);
10 
12 
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);
18 
19  void (*csum_update)(struct sk_buff *skb, unsigned int iphdroff,
20  __sum16 *check,
21  const struct nf_conntrack_tuple *t,
22  enum nf_nat_manip_type maniptype);
23 
25  void *data, __sum16 *check,
26  int datalen, int oldlen);
27 
29  const struct nf_conn *ct,
30  enum ip_conntrack_dir dir,
31  unsigned long statusbit,
32  struct flowi *fl);
33 
34  int (*nlattr_to_range)(struct nlattr *tb[],
35  struct nf_nat_range *range);
36 };
37 
38 extern int nf_nat_l3proto_register(const struct nf_nat_l3proto *);
39 extern void nf_nat_l3proto_unregister(const struct nf_nat_l3proto *);
40 extern const struct nf_nat_l3proto *__nf_nat_l3proto_find(u8 l3proto);
41 
42 extern int nf_nat_icmp_reply_translation(struct sk_buff *skb,
43  struct nf_conn *ct,
44  enum ip_conntrack_info ctinfo,
45  unsigned int hooknum);
47  struct nf_conn *ct,
48  enum ip_conntrack_info ctinfo,
49  unsigned int hooknum,
50  unsigned int hdrlen);
51 
52 #endif /* _NF_NAT_L3PROTO_H */