aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/af_inet6.c
diff options
context:
space:
mode:
authorBenjamin Thery <benjamin.thery@bull.net>2008-03-05 13:45:36 -0500
committerDavid S. Miller <davem@davemloft.net>2008-03-05 13:45:36 -0500
commit94911fe31710e355e9fcac8b1a7eb36c4953f36b (patch)
tree99858e0593841dc442f975acccf0f21322130f9e /net/ipv6/af_inet6.c
parent6b3d626321c1d4ce9138a86b047dfafc6a403016 (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.c27
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
1009out: 1009out:
1010 return err; 1010 return err;
1011 1011
1012#ifdef CONFIG_SYSCTL
1013sysctl_fail:
1014 ipv6_packet_cleanup();
1015#endif
1012ipv6_packet_fail: 1016ipv6_packet_fail:
1013 tcpv6_exit(); 1017 tcpv6_exit();
1014tcpv6_fail: 1018tcpv6_fail:
@@ -1050,10 +1054,6 @@ igmp_fail:
1050ndisc_fail: 1054ndisc_fail:
1051 icmpv6_cleanup(); 1055 icmpv6_cleanup();
1052icmp_fail: 1056icmp_fail:
1053#ifdef CONFIG_SYSCTL
1054 ipv6_sysctl_unregister();
1055sysctl_fail:
1056#endif
1057 unregister_pernet_subsys(&inet6_net_ops); 1057 unregister_pernet_subsys(&inet6_net_ops);
1058register_pernet_fail: 1058register_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);