Commit d16784d9 authored by Kirill Tkhai's avatar Kirill Tkhai Committed by David S. Miller

net: Convert fib6_net_ops, ipv6_addr_label_ops and ip6_segments_ops

These pernet_operations register and unregister tables
and lists for packets forwarding. All of the entities
are per-net. Init methods makes simple initializations,
and since net is not visible for foreigners at the time
it is working, it can't race with anything. Exit method
is executed when there are only local devices, and there
mustn't be packets in-flight. Also, it looks like no one
pernet_operations want to send ipv6 packets to foreign
net. The same reasons are for ipv6_addr_label_ops and
ip6_segments_ops. So, we are able to mark all them as
async.
Signed-off-by: default avatarKirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b4891413
...@@ -344,6 +344,7 @@ static void __net_exit ip6addrlbl_net_exit(struct net *net) ...@@ -344,6 +344,7 @@ static void __net_exit ip6addrlbl_net_exit(struct net *net)
static struct pernet_operations ipv6_addr_label_ops = { static struct pernet_operations ipv6_addr_label_ops = {
.init = ip6addrlbl_net_init, .init = ip6addrlbl_net_init,
.exit = ip6addrlbl_net_exit, .exit = ip6addrlbl_net_exit,
.async = true,
}; };
int __init ipv6_addr_label_init(void) int __init ipv6_addr_label_init(void)
......
...@@ -2160,6 +2160,7 @@ static void fib6_net_exit(struct net *net) ...@@ -2160,6 +2160,7 @@ static void fib6_net_exit(struct net *net)
static struct pernet_operations fib6_net_ops = { static struct pernet_operations fib6_net_ops = {
.init = fib6_net_init, .init = fib6_net_init,
.exit = fib6_net_exit, .exit = fib6_net_exit,
.async = true,
}; };
int __init fib6_init(void) int __init fib6_init(void)
......
...@@ -395,6 +395,7 @@ static void __net_exit seg6_net_exit(struct net *net) ...@@ -395,6 +395,7 @@ static void __net_exit seg6_net_exit(struct net *net)
static struct pernet_operations ip6_segments_ops = { static struct pernet_operations ip6_segments_ops = {
.init = seg6_net_init, .init = seg6_net_init,
.exit = seg6_net_exit, .exit = seg6_net_exit,
.async = true,
}; };
static const struct genl_ops seg6_genl_ops[] = { static const struct genl_ops seg6_genl_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