aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorGao feng <gaofeng@cn.fujitus.com>2012-05-28 17:04:09 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2012-06-07 08:58:39 -0400
commit2c352f444ccfa966a1aa4fd8e9ee29381c467448 (patch)
treebefcba86ddf2cdbd73d15e1e2620439158c8e2f4 /include/net
parentfdb694a01f1fcd30fd16d8aa290c34699fe98a17 (diff)
netfilter: nf_conntrack: prepare namespace support for l4 protocol trackers
This patch prepares the namespace support for layer 4 protocol trackers. Basically, this modifies the following interfaces: * nf_ct_[un]register_sysctl * nf_conntrack_l4proto_[un]register to include the namespace parameter. We still use init_net in this patch to prepare the ground for follow-up patches for each layer 4 protocol tracker. We add a new net_id field to struct nf_conntrack_l4proto that is used to store the pernet_operations id for each layer 4 protocol tracker. Note that AF_INET6's protocols do not need to do sysctl compat. Thus, we only register compat sysctl when l4proto.l3proto != AF_INET6. Acked-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/netfilter/nf_conntrack_l4proto.h11
-rw-r--r--include/net/netns/conntrack.h12
2 files changed, 21 insertions, 2 deletions
diff --git a/include/net/netfilter/nf_conntrack_l4proto.h b/include/net/netfilter/nf_conntrack_l4proto.h
index 3b572bb20aa2..d621c91de5c8 100644
--- a/include/net/netfilter/nf_conntrack_l4proto.h
+++ b/include/net/netfilter/nf_conntrack_l4proto.h
@@ -12,6 +12,7 @@
12#include <linux/netlink.h> 12#include <linux/netlink.h>
13#include <net/netlink.h> 13#include <net/netlink.h>
14#include <net/netfilter/nf_conntrack.h> 14#include <net/netfilter/nf_conntrack.h>
15#include <net/netns/generic.h>
15 16
16struct seq_file; 17struct seq_file;
17 18
@@ -103,6 +104,10 @@ struct nf_conntrack_l4proto {
103 struct ctl_table *ctl_compat_table; 104 struct ctl_table *ctl_compat_table;
104#endif 105#endif
105#endif 106#endif
107 int *net_id;
108 /* Init l4proto pernet data */
109 int (*init_net)(struct net *net);
110
106 /* Protocol name */ 111 /* Protocol name */
107 const char *name; 112 const char *name;
108 113
@@ -123,8 +128,10 @@ nf_ct_l4proto_find_get(u_int16_t l3proto, u_int8_t l4proto);
123extern void nf_ct_l4proto_put(struct nf_conntrack_l4proto *p); 128extern void nf_ct_l4proto_put(struct nf_conntrack_l4proto *p);
124 129
125/* Protocol registration. */ 130/* Protocol registration. */
126extern int nf_conntrack_l4proto_register(struct nf_conntrack_l4proto *proto); 131extern int nf_conntrack_l4proto_register(struct net *net,
127extern void nf_conntrack_l4proto_unregister(struct nf_conntrack_l4proto *proto); 132 struct nf_conntrack_l4proto *proto);
133extern void nf_conntrack_l4proto_unregister(struct net *net,
134 struct nf_conntrack_l4proto *proto);
128 135
129/* Generic netlink helpers */ 136/* Generic netlink helpers */
130extern int nf_ct_port_tuple_to_nlattr(struct sk_buff *skb, 137extern int nf_ct_port_tuple_to_nlattr(struct sk_buff *skb,
diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h
index a053a19870cf..1f53038b0d1b 100644
--- a/include/net/netns/conntrack.h
+++ b/include/net/netns/conntrack.h
@@ -8,6 +8,18 @@
8struct ctl_table_header; 8struct ctl_table_header;
9struct nf_conntrack_ecache; 9struct nf_conntrack_ecache;
10 10
11struct nf_proto_net {
12#ifdef CONFIG_SYSCTL
13 struct ctl_table_header *ctl_table_header;
14 struct ctl_table *ctl_table;
15#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
16 struct ctl_table_header *ctl_compat_header;
17 struct ctl_table *ctl_compat_table;
18#endif
19#endif
20 unsigned int users;
21};
22
11struct netns_ct { 23struct netns_ct {
12 atomic_t count; 24 atomic_t count;
13 unsigned int expect_count; 25 unsigned int expect_count;