diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2012-04-26 16:46:29 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2012-04-26 17:19:07 -0400 |
commit | a2cfd45b52006893fc0d0e850d187d30f86a39dc (patch) | |
tree | 37021cbc2fc95db7d3e4c6bc19b5f70f3b5ba598 /net/tipc/config.c | |
parent | 9cf6ace5f5c7981f5df76af3e1b90d77cc3cdece (diff) |
tipc: Optimize re-initialization of configuration service
Streamlines the job of re-initializing TIPC's configuration service
when a node's network address is first assigned. Rather than destroying
the configuration server port and then recreating it, TIPC now simply
withdraws the existing {0,<0.0.0>} name publication and creates a new
{0,<Z.C.N>} name publication that identifies the node's network address
to interested subscribers.
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc/config.c')
-rw-r--r-- | net/tipc/config.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/tipc/config.c b/net/tipc/config.c index f5458eddd7bc..a4988cdbde6d 100644 --- a/net/tipc/config.c +++ b/net/tipc/config.c | |||
@@ -489,6 +489,21 @@ failed: | |||
489 | return res; | 489 | return res; |
490 | } | 490 | } |
491 | 491 | ||
492 | void tipc_cfg_reinit(void) | ||
493 | { | ||
494 | struct tipc_name_seq seq; | ||
495 | int res; | ||
496 | |||
497 | seq.type = TIPC_CFG_SRV; | ||
498 | seq.lower = seq.upper = 0; | ||
499 | tipc_withdraw(config_port_ref, TIPC_ZONE_SCOPE, &seq); | ||
500 | |||
501 | seq.lower = seq.upper = tipc_own_addr; | ||
502 | res = tipc_publish(config_port_ref, TIPC_ZONE_SCOPE, &seq); | ||
503 | if (res) | ||
504 | err("Unable to reinitialize configuration service\n"); | ||
505 | } | ||
506 | |||
492 | void tipc_cfg_stop(void) | 507 | void tipc_cfg_stop(void) |
493 | { | 508 | { |
494 | if (config_port_ref) { | 509 | if (config_port_ref) { |