aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/node.c
diff options
context:
space:
mode:
authorErik Hugne <erik.hugne@ericsson.com>2014-04-24 10:26:47 -0400
committerDavid S. Miller <davem@davemloft.net>2014-04-26 12:13:24 -0400
commit78acb1f9b898e85fa2c1e28e700b54b66b288e8d (patch)
tree0520313d3d6afcc42d7aaf27fbe699e8bc71e2d5 /net/tipc/node.c
parenta89778d8baf19cd7e728d81121a294a06cedaad1 (diff)
tipc: add ioctl to fetch link names
We add a new ioctl for AF_TIPC that can be used to fetch the logical name for a link to a remote node on a given bearer. This should be used in combination with link state subscriptions. The logical name size limit definitions are moved to tipc.h, as they are now also needed by the new ioctl. 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/tipc/node.c')
-rw-r--r--net/tipc/node.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c
index 3b86a74cb31f..1f938f3dba4b 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -438,3 +438,30 @@ struct sk_buff *tipc_node_get_links(const void *req_tlv_area, int req_tlv_space)
438 rcu_read_unlock(); 438 rcu_read_unlock();
439 return buf; 439 return buf;
440} 440}
441
442/**
443 * tipc_node_get_linkname - get the name of a link
444 *
445 * @bearer_id: id of the bearer
446 * @node: peer node address
447 * @linkname: link name output buffer
448 *
449 * Returns 0 on success
450 */
451int tipc_node_get_linkname(u32 bearer_id, u32 addr, char *linkname, size_t len)
452{
453 struct tipc_link *link;
454 struct tipc_node *node = tipc_node_find(addr);
455
456 if ((bearer_id > MAX_BEARERS) || !node)
457 return -EINVAL;
458 tipc_node_lock(node);
459 link = node->links[bearer_id];
460 if (link) {
461 strncpy(linkname, link->name, len);
462 tipc_node_unlock(node);
463 return 0;
464 }
465 tipc_node_unlock(node);
466 return -EINVAL;
467}