aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/addr.h
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2012-04-17 18:02:01 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2012-04-19 15:46:39 -0400
commit336ebf5bf524e447227cb1d785b22ca722e6afa7 (patch)
tree72e72c183cf43ccfbb756a7866c8b3cf90eb6781 /net/tipc/addr.h
parenttipc: Don't record failed publication attempt as a success (diff)
downloadlinux-dev-336ebf5bf524e447227cb1d785b22ca722e6afa7.tar.xz
linux-dev-336ebf5bf524e447227cb1d785b22ca722e6afa7.zip
tipc: Add routines for safe checking of node's network address
Introduces routines that test whether a given network address is equal to a node's own network address or if it lies within the node's own network cluster, and which work properly regardless of whether the node is using the default network address <0.0.0> or a non-zero network address that is assigned later on. In essence, these routines ensure that address <0.0.0> is treated as an alias for "this node", regardless of which network address the node is actually using. Old users of the pre-existing more strict match in_own_cluster() have been accordingly redirected to what is now called in_own_cluster_exact() --- which does not extend matching to <0,0,0>. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc/addr.h')
-rw-r--r--net/tipc/addr.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/net/tipc/addr.h b/net/tipc/addr.h
index e4f35afe3207..d706a1d92be8 100644
--- a/net/tipc/addr.h
+++ b/net/tipc/addr.h
@@ -50,12 +50,30 @@ static inline u32 tipc_cluster_mask(u32 addr)
return addr & TIPC_CLUSTER_MASK;
}
-static inline int in_own_cluster(u32 addr)
+static inline int in_own_cluster_exact(u32 addr)
{
return !((addr ^ tipc_own_addr) >> 12);
}
/**
+ * in_own_node - test for node inclusion; <0.0.0> always matches
+ */
+
+static inline int in_own_node(u32 addr)
+{
+ return (addr == tipc_own_addr) || !addr;
+}
+
+/**
+ * in_own_cluster - test for cluster inclusion; <0.0.0> always matches
+ */
+
+static inline int in_own_cluster(u32 addr)
+{
+ return in_own_cluster_exact(addr) || !addr;
+}
+
+/**
* addr_domain - convert 2-bit scope value to equivalent message lookup domain
*
* Needed when address of a named message must be looked up a second time