]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - include/net/netfilter/nf_nat_l3proto.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[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 int nf_nat_l3proto_register(const struct nf_nat_l3proto *);
39 void nf_nat_l3proto_unregister(const struct nf_nat_l3proto *);
40 const struct nf_nat_l3proto *__nf_nat_l3proto_find(u8 l3proto);
41
42 int nf_nat_icmp_reply_translation(struct sk_buff *skb, struct nf_conn *ct,
43                                   enum ip_conntrack_info ctinfo,
44                                   unsigned int hooknum);
45
46 unsigned int nf_nat_ipv4_in(void *priv, struct sk_buff *skb,
47                             const struct nf_hook_state *state,
48                             unsigned int (*do_chain)(void *priv,
49                                                      struct sk_buff *skb,
50                                                      const struct nf_hook_state *state,
51                                                      struct nf_conn *ct));
52
53 unsigned int nf_nat_ipv4_out(void *priv, struct sk_buff *skb,
54                              const struct nf_hook_state *state,
55                              unsigned int (*do_chain)(void *priv,
56                                                       struct sk_buff *skb,
57                                                       const struct nf_hook_state *state,
58                                                       struct nf_conn *ct));
59
60 unsigned int nf_nat_ipv4_local_fn(void *priv,
61                                   struct sk_buff *skb,
62                                   const struct nf_hook_state *state,
63                                   unsigned int (*do_chain)(void *priv,
64                                                            struct sk_buff *skb,
65                                                            const struct nf_hook_state *state,
66                                                            struct nf_conn *ct));
67
68 unsigned int nf_nat_ipv4_fn(void *priv, struct sk_buff *skb,
69                             const struct nf_hook_state *state,
70                             unsigned int (*do_chain)(void *priv,
71                                                      struct sk_buff *skb,
72                                                      const struct nf_hook_state *state,
73                                                      struct nf_conn *ct));
74
75 int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct,
76                                     enum ip_conntrack_info ctinfo,
77                                     unsigned int hooknum, unsigned int hdrlen);
78
79 unsigned int nf_nat_ipv6_in(void *priv, struct sk_buff *skb,
80                             const struct nf_hook_state *state,
81                             unsigned int (*do_chain)(void *priv,
82                                                      struct sk_buff *skb,
83                                                      const struct nf_hook_state *state,
84                                                      struct nf_conn *ct));
85
86 unsigned int nf_nat_ipv6_out(void *priv, struct sk_buff *skb,
87                              const struct nf_hook_state *state,
88                              unsigned int (*do_chain)(void *priv,
89                                                       struct sk_buff *skb,
90                                                       const struct nf_hook_state *state,
91                                                       struct nf_conn *ct));
92
93 unsigned int nf_nat_ipv6_local_fn(void *priv,
94                                   struct sk_buff *skb,
95                                   const struct nf_hook_state *state,
96                                   unsigned int (*do_chain)(void *priv,
97                                                            struct sk_buff *skb,
98                                                            const struct nf_hook_state *state,
99                                                            struct nf_conn *ct));
100
101 unsigned int nf_nat_ipv6_fn(void *priv, struct sk_buff *skb,
102                             const struct nf_hook_state *state,
103                             unsigned int (*do_chain)(void *priv,
104                                                      struct sk_buff *skb,
105                                                      const struct nf_hook_state *state,
106                                                      struct nf_conn *ct));
107
108 #endif /* _NF_NAT_L3PROTO_H */