Commit 5b023fc8 authored by Gao feng's avatar Gao feng Committed by Pablo Neira Ayuso

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: default avatarGao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 9368a53c
...@@ -35,9 +35,6 @@ void nf_log_set(struct net *net, u_int8_t pf, const struct nf_logger *logger) ...@@ -35,9 +35,6 @@ void nf_log_set(struct net *net, u_int8_t pf, const struct nf_logger *logger)
{ {
const struct nf_logger *log; const struct nf_logger *log;
if (!net_eq(net, &init_net))
return;
if (pf == NFPROTO_UNSPEC) if (pf == NFPROTO_UNSPEC)
return; return;
...@@ -56,9 +53,6 @@ void nf_log_unset(struct net *net, const struct nf_logger *logger) ...@@ -56,9 +53,6 @@ void nf_log_unset(struct net *net, const struct nf_logger *logger)
int i; int i;
const struct nf_logger *log; const struct nf_logger *log;
if (!net_eq(net, &init_net))
return;
mutex_lock(&nf_log_mutex); mutex_lock(&nf_log_mutex);
for (i = 0; i < NFPROTO_NUMPROTO; i++) { for (i = 0; i < NFPROTO_NUMPROTO; i++) {
log = rcu_dereference_protected(net->nf.nf_loggers[i], 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,7 +88,6 @@ int nf_log_register(u_int8_t pf, struct nf_logger *logger)
mutex_unlock(&nf_log_mutex); mutex_unlock(&nf_log_mutex);
nf_log_set(&init_net, pf, logger);
return 0; return 0;
} }
EXPORT_SYMBOL(nf_log_register); EXPORT_SYMBOL(nf_log_register);
...@@ -107,17 +100,12 @@ void nf_log_unregister(struct nf_logger *logger) ...@@ -107,17 +100,12 @@ void nf_log_unregister(struct nf_logger *logger)
for (i = 0; i < NFPROTO_NUMPROTO; i++) for (i = 0; i < NFPROTO_NUMPROTO; i++)
list_del(&logger->list[i]); list_del(&logger->list[i]);
mutex_unlock(&nf_log_mutex); mutex_unlock(&nf_log_mutex);
nf_log_unset(&init_net, logger);
} }
EXPORT_SYMBOL(nf_log_unregister); EXPORT_SYMBOL(nf_log_unregister);
int nf_log_bind_pf(struct net *net, u_int8_t pf, int nf_log_bind_pf(struct net *net, u_int8_t pf,
const struct nf_logger *logger) const struct nf_logger *logger)
{ {
if (!net_eq(net, &init_net))
return 0;
if (pf >= ARRAY_SIZE(net->nf.nf_loggers)) if (pf >= ARRAY_SIZE(net->nf.nf_loggers))
return -EINVAL; return -EINVAL;
mutex_lock(&nf_log_mutex); mutex_lock(&nf_log_mutex);
...@@ -133,9 +121,6 @@ EXPORT_SYMBOL(nf_log_bind_pf); ...@@ -133,9 +121,6 @@ EXPORT_SYMBOL(nf_log_bind_pf);
void nf_log_unbind_pf(struct net *net, u_int8_t pf) void nf_log_unbind_pf(struct net *net, u_int8_t pf)
{ {
if (!net_eq(net, &init_net))
return;
if (pf >= ARRAY_SIZE(net->nf.nf_loggers)) if (pf >= ARRAY_SIZE(net->nf.nf_loggers))
return; return;
mutex_lock(&nf_log_mutex); mutex_lock(&nf_log_mutex);
...@@ -157,9 +142,6 @@ void nf_log_packet(struct net *net, ...@@ -157,9 +142,6 @@ void nf_log_packet(struct net *net,
char prefix[NF_LOG_PREFIXLEN]; char prefix[NF_LOG_PREFIXLEN];
const struct nf_logger *logger; const struct nf_logger *logger;
if (!net_eq(net, &init_net))
return;
rcu_read_lock(); rcu_read_lock();
logger = rcu_dereference(net->nf.nf_loggers[pf]); logger = rcu_dereference(net->nf.nf_loggers[pf]);
if (logger) { if (logger) {
...@@ -274,9 +256,6 @@ static int nf_log_proc_dostring(ctl_table *table, int write, ...@@ -274,9 +256,6 @@ static int nf_log_proc_dostring(ctl_table *table, int write,
struct net *net = current->nsproxy->net_ns; struct net *net = current->nsproxy->net_ns;
if (write) { if (write) {
if (!net_eq(net, &init_net))
return -EPERM;
if (size > sizeof(buf)) if (size > sizeof(buf))
size = sizeof(buf); size = sizeof(buf);
if (copy_from_user(buf, buffer, size)) if (copy_from_user(buf, buffer, size))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment