path: root/net/tipc/addr.h
diff options
authorJon Maloy <jon.maloy@ericsson.com>2018-03-22 20:42:50 +0100
committerDavid S. Miller <davem@davemloft.net>2018-03-23 13:12:18 -0400
commitd50ccc2d3909fc1b4d40e4af16b026f05dc68707 (patch)
tree09ef046f87dc8eb6d4611b26a355477293a01bbd /net/tipc/addr.h
parenttipc: remove direct accesses to own_addr field in struct tipc_net (diff)
tipc: add 128-bit node identifier
We add a 128-bit node identity, as an alternative to the currently used 32-bit node address. For the sake of compatibility and to minimize message header changes we retain the existing 32-bit address field. When not set explicitly by the user, this field will be filled with a hash value generated from the much longer node identity, and be used as a shorthand value for the latter. We permit either the address or the identity to be set by configuration, but not both, so when the address value is set by a legacy user the corresponding 128-bit node identity is generated based on the that value. Acked-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/addr.h')
1 files changed, 23 insertions, 5 deletions
diff --git a/net/tipc/addr.h b/net/tipc/addr.h
index 6b48f0dc0205..31bee0ea7b3e 100644
--- a/net/tipc/addr.h
+++ b/net/tipc/addr.h
@@ -1,7 +1,7 @@
* net/tipc/addr.h: Include file for TIPC address utility routines
- * Copyright (c) 2000-2006, Ericsson AB
+ * Copyright (c) 2000-2006, 2018, Ericsson AB
* Copyright (c) 2004-2005, Wind River Systems
* All rights reserved.
@@ -45,9 +45,21 @@
static inline u32 tipc_own_addr(struct net *net)
+ return tipc_net(net)->node_addr;
+static inline u8 *tipc_own_id(struct net *net)
struct tipc_net *tn = tipc_net(net);
- return tn->own_addr;
+ if (!strlen(tn->node_id_string))
+ return NULL;
+ return tn->node_id;
+static inline char *tipc_own_id_string(struct net *net)
+ return tipc_net(net)->node_id_string;
static inline u32 tipc_cluster_mask(u32 addr)
@@ -65,9 +77,15 @@ static inline int tipc_scope2node(struct net *net, int sc)
return sc != TIPC_NODE_SCOPE ? 0 : tipc_own_addr(net);
-u32 tipc_own_addr(struct net *net);
-int in_own_node(struct net *net, u32 addr);
+static inline int in_own_node(struct net *net, u32 addr)
+ return addr == tipc_own_addr(net) || !addr;
bool tipc_in_scope(bool legacy_format, u32 domain, u32 addr);
-char *tipc_addr_string_fill(char *string, u32 addr);
+void tipc_set_node_id(struct net *net, u8 *id);
+void tipc_set_node_addr(struct net *net, u32 addr);
+char *tipc_nodeid2string(char *str, u8 *id);
+u32 tipc_node_id2hash(u8 *id128);