aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter
diff options
context:
space:
mode:
authorGao feng <gaofeng@cn.fujitsu.com>2013-04-05 11:04:35 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2013-04-05 15:08:10 -0400
commit5b023fc8d8e0997e0b7ea6506d243afd5478c96e (patch)
treec94742fdc6d47c6750e923aad9d16f9d7eef687e /net/netfilter
parent9368a53c471b42a1bd99117d590ce2ccdc8dc3c2 (diff)
netfilter: enable per netns support for nf_loggers
After this patch, all nf_loggers support net namespace. Still xt_LOG and ebt_log require syslog netns support. Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter')
-rw-r--r--net/netfilter/nf_log.c21
1 files changed, 0 insertions, 21 deletions
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
index 8d331dc9b1ea..388656d5a9ec 100644
--- a/net/netfilter/nf_log.c
+++ b/net/netfilter/nf_log.c
@@ -35,9 +35,6 @@ void nf_log_set(struct net *net, u_int8_t pf, const struct nf_logger *logger)
35{ 35{
36 const struct nf_logger *log; 36 const struct nf_logger *log;
37 37
38 if (!net_eq(net, &init_net))
39 return;
40
41 if (pf == NFPROTO_UNSPEC) 38 if (pf == NFPROTO_UNSPEC)
42 return; 39 return;
43 40
@@ -56,9 +53,6 @@ void nf_log_unset(struct net *net, const struct nf_logger *logger)
56 int i; 53 int i;
57 const struct nf_logger *log; 54 const struct nf_logger *log;
58 55
59 if (!net_eq(net, &init_net))
60 return;
61
62 mutex_lock(&nf_log_mutex); 56 mutex_lock(&nf_log_mutex);
63 for (i = 0; i < NFPROTO_NUMPROTO; i++) { 57 for (i = 0; i < NFPROTO_NUMPROTO; i++) {
64 log = rcu_dereference_protected(net->nf.nf_loggers[i], 58 log = rcu_dereference_protected(net->nf.nf_loggers[i],
@@ -94,7 +88,6 @@ int nf_log_register(u_int8_t pf, struct nf_logger *logger)
94 88
95 mutex_unlock(&nf_log_mutex); 89 mutex_unlock(&nf_log_mutex);
96 90
97 nf_log_set(&init_net, pf, logger);
98 return 0; 91 return 0;
99} 92}
100EXPORT_SYMBOL(nf_log_register); 93EXPORT_SYMBOL(nf_log_register);
@@ -107,17 +100,12 @@ void nf_log_unregister(struct nf_logger *logger)
107 for (i = 0; i < NFPROTO_NUMPROTO; i++) 100 for (i = 0; i < NFPROTO_NUMPROTO; i++)
108 list_del(&logger->list[i]); 101 list_del(&logger->list[i]);
109 mutex_unlock(&nf_log_mutex); 102 mutex_unlock(&nf_log_mutex);
110
111 nf_log_unset(&init_net, logger);
112} 103}
113EXPORT_SYMBOL(nf_log_unregister); 104EXPORT_SYMBOL(nf_log_unregister);
114 105
115int nf_log_bind_pf(struct net *net, u_int8_t pf, 106int nf_log_bind_pf(struct net *net, u_int8_t pf,
116 const struct nf_logger *logger) 107 const struct nf_logger *logger)
117{ 108{
118 if (!net_eq(net, &init_net))
119 return 0;
120
121 if (pf >= ARRAY_SIZE(net->nf.nf_loggers)) 109 if (pf >= ARRAY_SIZE(net->nf.nf_loggers))
122 return -EINVAL; 110 return -EINVAL;
123 mutex_lock(&nf_log_mutex); 111 mutex_lock(&nf_log_mutex);
@@ -133,9 +121,6 @@ EXPORT_SYMBOL(nf_log_bind_pf);
133 121
134void nf_log_unbind_pf(struct net *net, u_int8_t pf) 122void nf_log_unbind_pf(struct net *net, u_int8_t pf)
135{ 123{
136 if (!net_eq(net, &init_net))
137 return;
138
139 if (pf >= ARRAY_SIZE(net->nf.nf_loggers)) 124 if (pf >= ARRAY_SIZE(net->nf.nf_loggers))
140 return; 125 return;
141 mutex_lock(&nf_log_mutex); 126 mutex_lock(&nf_log_mutex);
@@ -157,9 +142,6 @@ void nf_log_packet(struct net *net,
157 char prefix[NF_LOG_PREFIXLEN]; 142 char prefix[NF_LOG_PREFIXLEN];
158 const struct nf_logger *logger; 143 const struct nf_logger *logger;
159 144
160 if (!net_eq(net, &init_net))
161 return;
162
163 rcu_read_lock(); 145 rcu_read_lock();
164 logger = rcu_dereference(net->nf.nf_loggers[pf]); 146 logger = rcu_dereference(net->nf.nf_loggers[pf]);
165 if (logger) { 147 if (logger) {
@@ -274,9 +256,6 @@ static int nf_log_proc_dostring(ctl_table *table, int write,
274 struct net *net = current->nsproxy->net_ns; 256 struct net *net = current->nsproxy->net_ns;
275 257
276 if (write) { 258 if (write) {
277 if (!net_eq(net, &init_net))
278 return -EPERM;
279
280 if (size > sizeof(buf)) 259 if (size > sizeof(buf))
281 size = sizeof(buf); 260 size = sizeof(buf);
282 if (copy_from_user(buf, buffer, size)) 261 if (copy_from_user(buf, buffer, size))