diff options
author | Erik Hugne <erik.hugne@ericsson.com> | 2014-04-24 14:26:46 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-04-26 16:13:24 (GMT) |
commit | a89778d8baf19cd7e728d81121a294a06cedaad1 (patch) | |
tree | 0b28a16308baf11df88b2557f0184156655c1cb7 /net | |
parent | d42f157b3498a042d9930506d4b55ded5dcb35c0 (diff) | |
download | linux-a89778d8baf19cd7e728d81121a294a06cedaad1.tar.xz |
tipc: add support for link state subscriptions
When links are established over a bearer plane, we create a node
local publication containing information about the peer node and
bearer plane. This allows TIPC applications to use the standard
TIPC topology server subscription mechanism to get notifications
when a link goes up or down.
Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/tipc/node.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index be90115..3b86a74 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -144,9 +144,11 @@ void tipc_node_stop(void) void tipc_node_link_up(struct tipc_node *n_ptr, struct tipc_link *l_ptr) { struct tipc_link **active = &n_ptr->active_links[0]; + u32 addr = n_ptr->addr; n_ptr->working_links++; - + tipc_nametbl_publish(TIPC_LINK_STATE, addr, addr, TIPC_NODE_SCOPE, + l_ptr->bearer_id, addr); pr_info("Established link <%s> on network plane %c\n", l_ptr->name, l_ptr->net_plane); @@ -203,8 +205,10 @@ static void node_select_active_links(struct tipc_node *n_ptr) void tipc_node_link_down(struct tipc_node *n_ptr, struct tipc_link *l_ptr) { struct tipc_link **active; + u32 addr = n_ptr->addr; n_ptr->working_links--; + tipc_nametbl_withdraw(TIPC_LINK_STATE, addr, l_ptr->bearer_id, addr); if (!tipc_link_is_active(l_ptr)) { pr_info("Lost standby link <%s> on network plane %c\n", |