Commit 89918fc2 authored by Daniel Lezcano's avatar Daniel Lezcano Committed by David S. Miller

[NETNS][IPV6]: Make the ipv6 sysctl to be a netns subsystem.

The initialization of the sysctl for the ipv6 protocol is changed to a
network namespace subsystem. That means when a new network namespace
is created the initialization function for the sysctl will be called.

That do not change the behavior of the sysctl in case of the kernel
with the network namespace disabled.
Signed-off-by: default avatarDaniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b0f159db
...@@ -91,9 +91,9 @@ EXPORT_SYMBOL_GPL(net_ipv6_ctl_path); ...@@ -91,9 +91,9 @@ EXPORT_SYMBOL_GPL(net_ipv6_ctl_path);
static struct ctl_table_header *ipv6_sysctl_header; static struct ctl_table_header *ipv6_sysctl_header;
int ipv6_sysctl_register(void) static int ipv6_sysctl_net_init(struct net *net)
{ {
ipv6_sysctl_header = register_sysctl_paths(net_ipv6_ctl_path, ipv6_sysctl_header = register_net_sysctl_table(net, net_ipv6_ctl_path,
ipv6_table); ipv6_table);
if (!ipv6_sysctl_header) if (!ipv6_sysctl_header)
return -ENOMEM; return -ENOMEM;
...@@ -102,7 +102,22 @@ int ipv6_sysctl_register(void) ...@@ -102,7 +102,22 @@ int ipv6_sysctl_register(void)
} }
static void ipv6_sysctl_net_exit(struct net *net)
{
unregister_net_sysctl_table(ipv6_sysctl_header);
}
static struct pernet_operations ipv6_sysctl_net_ops = {
.init = ipv6_sysctl_net_init,
.exit = ipv6_sysctl_net_exit,
};
int ipv6_sysctl_register(void)
{
return register_pernet_subsys(&ipv6_sysctl_net_ops);
}
void ipv6_sysctl_unregister(void) void ipv6_sysctl_unregister(void)
{ {
unregister_sysctl_table(ipv6_sysctl_header); unregister_pernet_subsys(&ipv6_sysctl_net_ops);
} }
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