tipc: introduce constants for tipc address validation
authorParthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Tue, 26 Jul 2016 06:47:18 +0000 (08:47 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Jul 2016 21:26:42 +0000 (14:26 -0700)
In this commit, we introduce defines for tipc address size,
offset and mask specification for Zone.Cluster.Node.
There is no functional change in this commit.

Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/tipc.h
net/tipc/addr.h
net/tipc/bearer.c

index 6f71b9b4159581eac01241f9c443948584f30f6e..bf049e8fe31bf5036eed3e47df90118a240a762a 100644 (file)
@@ -60,26 +60,48 @@ struct tipc_name_seq {
        __u32 upper;
 };
 
+/* TIPC Address Size, Offset, Mask specification for Z.C.N
+ */
+#define TIPC_NODE_BITS          12
+#define TIPC_CLUSTER_BITS       12
+#define TIPC_ZONE_BITS          8
+
+#define TIPC_NODE_OFFSET        0
+#define TIPC_CLUSTER_OFFSET     TIPC_NODE_BITS
+#define TIPC_ZONE_OFFSET        (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
+
+#define TIPC_NODE_SIZE          ((1UL << TIPC_NODE_BITS) - 1)
+#define TIPC_CLUSTER_SIZE       ((1UL << TIPC_CLUSTER_BITS) - 1)
+#define TIPC_ZONE_SIZE          ((1UL << TIPC_ZONE_BITS) - 1)
+
+#define TIPC_NODE_MASK         (TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
+#define TIPC_CLUSTER_MASK      (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
+#define TIPC_ZONE_MASK         (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
+
+#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
+
 static inline __u32 tipc_addr(unsigned int zone,
                              unsigned int cluster,
                              unsigned int node)
 {
-       return (zone << 24) | (cluster << 12) | node;
+       return (zone << TIPC_ZONE_OFFSET) |
+               (cluster << TIPC_CLUSTER_OFFSET) |
+               node;
 }
 
 static inline unsigned int tipc_zone(__u32 addr)
 {
-       return addr >> 24;
+       return addr >> TIPC_ZONE_OFFSET;
 }
 
 static inline unsigned int tipc_cluster(__u32 addr)
 {
-       return (addr >> 12) & 0xfff;
+       return (addr & TIPC_CLUSTER_MASK) >> TIPC_CLUSTER_OFFSET;
 }
 
 static inline unsigned int tipc_node(__u32 addr)
 {
-       return addr & 0xfff;
+       return addr & TIPC_NODE_MASK;
 }
 
 /*
index 64f4004a6facb37ac2a5c59c2b9f9f75ad8fb7ab..bebb347803ce8d1d1eab6fafae533833512d9ef1 100644 (file)
@@ -43,9 +43,6 @@
 #include <net/netns/generic.h>
 #include "core.h"
 
-#define TIPC_ZONE_MASK         0xff000000u
-#define TIPC_CLUSTER_MASK      0xfffff000u
-
 static inline u32 tipc_own_addr(struct net *net)
 {
        struct tipc_net *tn = net_generic(net, tipc_net_id);
@@ -60,7 +57,7 @@ static inline u32 tipc_zone_mask(u32 addr)
 
 static inline u32 tipc_cluster_mask(u32 addr)
 {
-       return addr & TIPC_CLUSTER_MASK;
+       return addr & TIPC_ZONE_CLUSTER_MASK;
 }
 
 u32 tipc_own_addr(struct net *net);
index 4131d5a86f55146de407d9bd1495cb695370a9fd..65b0998a9bab1df02b07429e97e2f3719c537bf4 100644 (file)
@@ -225,7 +225,7 @@ static int tipc_enable_bearer(struct net *net, const char *name,
        if (tipc_addr_domain_valid(disc_domain) &&
            (disc_domain != tn->own_addr)) {
                if (tipc_in_scope(disc_domain, tn->own_addr)) {
-                       disc_domain = tn->own_addr & TIPC_CLUSTER_MASK;
+                       disc_domain = tn->own_addr & TIPC_ZONE_CLUSTER_MASK;
                        res = 0;   /* accept any node in own cluster */
                } else if (in_own_cluster_exact(net, disc_domain))
                        res = 0;   /* accept specified node in own cluster */
@@ -832,7 +832,7 @@ int tipc_nl_bearer_enable(struct sk_buff *skb, struct genl_info *info)
        u32 prio;
 
        prio = TIPC_MEDIA_LINK_PRI;
-       domain = tn->own_addr & TIPC_CLUSTER_MASK;
+       domain = tn->own_addr & TIPC_ZONE_CLUSTER_MASK;
 
        if (!info->attrs[TIPC_NLA_BEARER])
                return -EINVAL;