]> git.karo-electronics.de Git - karo-tx-linux.git/blob - include/net/netfilter/nf_nat_l3proto.h
raid1: Add some macros to make code clearly.
[karo-tx-linux.git] / include / net / netfilter / nf_nat_l3proto.h
1 #ifndef _NF_NAT_L3PROTO_H
2 #define _NF_NAT_L3PROTO_H
3
4 struct nf_nat_l4proto;
5 struct nf_nat_l3proto {
6         u8      l3proto;
7
8         bool    (*in_range)(const struct nf_conntrack_tuple *t,
9                             const struct nf_nat_range *range);
10
11         u32     (*secure_port)(const struct nf_conntrack_tuple *t, __be16);
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
24         void    (*csum_recalc)(struct sk_buff *skb, u8 proto,
25                                void *data, __sum16 *check,
26                                int datalen, int oldlen);
27
28         void    (*decode_session)(struct sk_buff *skb,
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);
46 extern int nf_nat_icmpv6_reply_translation(struct sk_buff *skb,
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 */