aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/net.c
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2012-04-26 17:21:49 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2012-04-26 18:15:40 -0400
commiteb3865a99dc38396a403ef82f99f4c51dd34f0bf (patch)
tree336dcfab7ed6320a590c3b17d7c4dd651ead831c /net/tipc/net.c
parenteb323b075a360d59fabbbd58c0d7aeb951bfc647 (diff)
tipc: Enhance re-initialization of network topology service
Streamlines the job of re-initializing TIPC's network topology service when a node's network address is first assigned. Rather than destroying the topology server port and breaking its connections to existing subscribers, TIPC now simply lets the service continue running (since the change to the port identifier of each port used by the topology service no longer impacts the flow of messages between the service and its subscribers). This enhancement means that applications that utilize the topology service prior to the assignment of TIPC's network address no longer need to re-establish their subscriptions when the address is finally assigned. However, it is worth noting that any subsequent events for existing subscriptions report the new port identifier of the publishing port, rather than the original port identifier. (For example, a name that was previously reported as being published by <0.0.0:ref> may be subsequently withdrawn by <Z.C.N:ref>.) This doesn't impact any of the existing known userspace in tipc-utils, since (a) TIPC continues to treat references to the original port ID correctly and (b) normal use cases assign an address before active use. However if there does happen to be some rare/custom application out there that was relying on this, they can simply bypass the enhancement by issuing a subscription to {0,0} and break its connection to the topology service, if an associated withdrawal event occurs. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc/net.c')
-rw-r--r--net/tipc/net.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/net/tipc/net.c b/net/tipc/net.c
index f4a490b0cf4c..7c236c89cf5e 100644
--- a/net/tipc/net.c
+++ b/net/tipc/net.c
@@ -175,8 +175,6 @@ int tipc_net_start(u32 addr)
175{ 175{
176 char addr_string[16]; 176 char addr_string[16];
177 177
178 tipc_subscr_stop();
179
180 write_lock_bh(&tipc_net_lock); 178 write_lock_bh(&tipc_net_lock);
181 tipc_own_addr = addr; 179 tipc_own_addr = addr;
182 tipc_named_reinit(); 180 tipc_named_reinit();
@@ -184,7 +182,6 @@ int tipc_net_start(u32 addr)
184 tipc_bclink_init(); 182 tipc_bclink_init();
185 write_unlock_bh(&tipc_net_lock); 183 write_unlock_bh(&tipc_net_lock);
186 184
187 tipc_k_signal((Handler)tipc_subscr_start, 0);
188 tipc_cfg_reinit(); 185 tipc_cfg_reinit();
189 186
190 info("Started in network mode\n"); 187 info("Started in network mode\n");