aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/core.c
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2015-01-09 02:27:11 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-12 16:24:33 -0500
commita62fbccecd62bacb4416fc427239f5b43b25d05e (patch)
tree7f2646f08ce92d8d82cf4a6cbd2126e7f71555ec /net/tipc/core.c
parent347475395434abb2b61bf59c2952470f37072567 (diff)
tipc: make subscriber server support net namespace
TIPC establishes one subscriber server which allows users to subscribe their interesting name service status. After tipc supports namespace, one dedicated tipc stack instance is created for each namespace, and each instance can be deemed as one independent TIPC node. As a result, subscriber server must be built for each namespace. Signed-off-by: Ying Xue <ying.xue@windriver.com> Tested-by: Tero Aho <Tero.Aho@coriant.com> Reviewed-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/core.c')
-rw-r--r--net/tipc/core.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/net/tipc/core.c b/net/tipc/core.c
index 7c09670120eb..4a8b7955e0e0 100644
--- a/net/tipc/core.c
+++ b/net/tipc/core.c
@@ -68,8 +68,14 @@ static int __net_init tipc_init_net(struct net *net)
68 err = tipc_nametbl_init(net); 68 err = tipc_nametbl_init(net);
69 if (err) 69 if (err)
70 goto out_nametbl; 70 goto out_nametbl;
71
72 err = tipc_subscr_start(net);
73 if (err)
74 goto out_subscr;
71 return 0; 75 return 0;
72 76
77out_subscr:
78 tipc_nametbl_stop(net);
73out_nametbl: 79out_nametbl:
74 tipc_sk_rht_destroy(net); 80 tipc_sk_rht_destroy(net);
75out_sk_rht: 81out_sk_rht:
@@ -78,6 +84,7 @@ out_sk_rht:
78 84
79static void __net_exit tipc_exit_net(struct net *net) 85static void __net_exit tipc_exit_net(struct net *net)
80{ 86{
87 tipc_subscr_stop(net);
81 tipc_net_stop(net); 88 tipc_net_stop(net);
82 tipc_nametbl_stop(net); 89 tipc_nametbl_stop(net);
83 tipc_sk_rht_destroy(net); 90 tipc_sk_rht_destroy(net);
@@ -104,10 +111,6 @@ static int __init tipc_init(void)
104 111
105 get_random_bytes(&tipc_random, sizeof(tipc_random)); 112 get_random_bytes(&tipc_random, sizeof(tipc_random));
106 113
107 err = register_pernet_subsys(&tipc_net_ops);
108 if (err)
109 goto out_pernet;
110
111 err = tipc_netlink_start(); 114 err = tipc_netlink_start();
112 if (err) 115 if (err)
113 goto out_netlink; 116 goto out_netlink;
@@ -120,9 +123,9 @@ static int __init tipc_init(void)
120 if (err) 123 if (err)
121 goto out_sysctl; 124 goto out_sysctl;
122 125
123 err = tipc_subscr_start(); 126 err = register_pernet_subsys(&tipc_net_ops);
124 if (err) 127 if (err)
125 goto out_subscr; 128 goto out_pernet;
126 129
127 err = tipc_bearer_setup(); 130 err = tipc_bearer_setup();
128 if (err) 131 if (err)
@@ -131,28 +134,25 @@ static int __init tipc_init(void)
131 pr_info("Started in single node mode\n"); 134 pr_info("Started in single node mode\n");
132 return 0; 135 return 0;
133out_bearer: 136out_bearer:
134 tipc_subscr_stop(); 137 unregister_pernet_subsys(&tipc_net_ops);
135out_subscr: 138out_pernet:
136 tipc_unregister_sysctl(); 139 tipc_unregister_sysctl();
137out_sysctl: 140out_sysctl:
138 tipc_socket_stop(); 141 tipc_socket_stop();
139out_socket: 142out_socket:
140 tipc_netlink_stop(); 143 tipc_netlink_stop();
141out_netlink: 144out_netlink:
142 unregister_pernet_subsys(&tipc_net_ops);
143out_pernet:
144 pr_err("Unable to start in single node mode\n"); 145 pr_err("Unable to start in single node mode\n");
145 return err; 146 return err;
146} 147}
147 148
148static void __exit tipc_exit(void) 149static void __exit tipc_exit(void)
149{ 150{
150 unregister_pernet_subsys(&tipc_net_ops);
151 tipc_bearer_cleanup(); 151 tipc_bearer_cleanup();
152 tipc_netlink_stop(); 152 tipc_netlink_stop();
153 tipc_subscr_stop();
154 tipc_socket_stop(); 153 tipc_socket_stop();
155 tipc_unregister_sysctl(); 154 tipc_unregister_sysctl();
155 unregister_pernet_subsys(&tipc_net_ops);
156 156
157 pr_info("Deactivated\n"); 157 pr_info("Deactivated\n");
158} 158}