[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:
parent
024626e36d
commit
790a353289
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue