[NET] sysctl: prepare core tables to point to netns variables

Some of ctl variables are going to be on the struct
net. Here's the way to adjust the ->data pointer on the
ctl_table-s to point on the right variable.

Since some pointers still point on the global variables,
I keep turning the write bits off on such tables.

This looks to become a common procedure for net sysctls,
so later parts of this code may migrate to some more
generic place.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Pavel Emelyanov 2007-12-08 00:11:51 -08:00 committed by David S. Miller
parent 024626e36d
commit 790a353289
1 changed files with 7 additions and 2 deletions

View File

@ -167,8 +167,13 @@ static __net_init int sysctl_core_net_init(struct net *net)
if (tbl == NULL) if (tbl == NULL)
goto err_dup; goto err_dup;
for (tmp = tbl; tmp->procname; tmp++) for (tmp = tbl; tmp->procname; tmp++) {
tmp->mode &= ~0222; if (tmp->data >= (void *)&init_net &&
tmp->data < (void *)(&init_net + 1))
tmp->data += (char *)net - (char *)&init_net;
else
tmp->mode &= ~0222;
}
} }
net->sysctl_core_hdr = register_net_sysctl_table(net, net->sysctl_core_hdr = register_net_sysctl_table(net,