diff options
author | Benjamin Thery <benjamin.thery@bull.net> | 2008-03-05 13:45:36 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-05 13:45:36 -0500 |
commit | 94911fe31710e355e9fcac8b1a7eb36c4953f36b (patch) | |
tree | 99858e0593841dc442f975acccf0f21322130f9e /net/ipv6/af_inet6.c | |
parent | 6b3d626321c1d4ce9138a86b047dfafc6a403016 (diff) |
[NETNS][IPV6] Move sysctl initialization later on in the IPv6 init sequence
This patch moves initialization of IPv6 sysctl stuff at the end of
IPv6 initialization.
This will be helpful for network namespaces where some sysctl entries
depend on per-namespace variables, that need to be allocated and
initialized before they are referenced by sysctl.
Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/af_inet6.c')
-rw-r--r-- | net/ipv6/af_inet6.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 60b8a2254046..af5b30787662 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -934,12 +934,6 @@ static int __init inet6_init(void) | |||
934 | err = register_pernet_subsys(&inet6_net_ops); | 934 | err = register_pernet_subsys(&inet6_net_ops); |
935 | if (err) | 935 | if (err) |
936 | goto register_pernet_fail; | 936 | goto register_pernet_fail; |
937 | |||
938 | #ifdef CONFIG_SYSCTL | ||
939 | err = ipv6_sysctl_register(); | ||
940 | if (err) | ||
941 | goto sysctl_fail; | ||
942 | #endif | ||
943 | err = icmpv6_init(); | 937 | err = icmpv6_init(); |
944 | if (err) | 938 | if (err) |
945 | goto icmp_fail; | 939 | goto icmp_fail; |
@@ -1006,9 +1000,19 @@ static int __init inet6_init(void) | |||
1006 | err = ipv6_packet_init(); | 1000 | err = ipv6_packet_init(); |
1007 | if (err) | 1001 | if (err) |
1008 | goto ipv6_packet_fail; | 1002 | goto ipv6_packet_fail; |
1003 | |||
1004 | #ifdef CONFIG_SYSCTL | ||
1005 | err = ipv6_sysctl_register(); | ||
1006 | if (err) | ||
1007 | goto sysctl_fail; | ||
1008 | #endif | ||
1009 | out: | 1009 | out: |
1010 | return err; | 1010 | return err; |
1011 | 1011 | ||
1012 | #ifdef CONFIG_SYSCTL | ||
1013 | sysctl_fail: | ||
1014 | ipv6_packet_cleanup(); | ||
1015 | #endif | ||
1012 | ipv6_packet_fail: | 1016 | ipv6_packet_fail: |
1013 | tcpv6_exit(); | 1017 | tcpv6_exit(); |
1014 | tcpv6_fail: | 1018 | tcpv6_fail: |
@@ -1050,10 +1054,6 @@ igmp_fail: | |||
1050 | ndisc_fail: | 1054 | ndisc_fail: |
1051 | icmpv6_cleanup(); | 1055 | icmpv6_cleanup(); |
1052 | icmp_fail: | 1056 | icmp_fail: |
1053 | #ifdef CONFIG_SYSCTL | ||
1054 | ipv6_sysctl_unregister(); | ||
1055 | sysctl_fail: | ||
1056 | #endif | ||
1057 | unregister_pernet_subsys(&inet6_net_ops); | 1057 | unregister_pernet_subsys(&inet6_net_ops); |
1058 | register_pernet_fail: | 1058 | register_pernet_fail: |
1059 | cleanup_ipv6_mibs(); | 1059 | cleanup_ipv6_mibs(); |
@@ -1083,6 +1083,9 @@ static void __exit inet6_exit(void) | |||
1083 | /* Disallow any further netlink messages */ | 1083 | /* Disallow any further netlink messages */ |
1084 | rtnl_unregister_all(PF_INET6); | 1084 | rtnl_unregister_all(PF_INET6); |
1085 | 1085 | ||
1086 | #ifdef CONFIG_SYSCTL | ||
1087 | ipv6_sysctl_unregister(); | ||
1088 | #endif | ||
1086 | udpv6_exit(); | 1089 | udpv6_exit(); |
1087 | #ifdef CONFIG_IP_UDPLITE | 1090 | #ifdef CONFIG_IP_UDPLITE |
1088 | udplitev6_exit(); | 1091 | udplitev6_exit(); |
@@ -1112,9 +1115,7 @@ static void __exit inet6_exit(void) | |||
1112 | ndisc_cleanup(); | 1115 | ndisc_cleanup(); |
1113 | icmpv6_cleanup(); | 1116 | icmpv6_cleanup(); |
1114 | rawv6_exit(); | 1117 | rawv6_exit(); |
1115 | #ifdef CONFIG_SYSCTL | 1118 | |
1116 | ipv6_sysctl_unregister(); | ||
1117 | #endif | ||
1118 | unregister_pernet_subsys(&inet6_net_ops); | 1119 | unregister_pernet_subsys(&inet6_net_ops); |
1119 | cleanup_ipv6_mibs(); | 1120 | cleanup_ipv6_mibs(); |
1120 | proto_unregister(&rawv6_prot); | 1121 | proto_unregister(&rawv6_prot); |