__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;
 }
 
 /*
 
 #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);
 
 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);
 
        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 */
        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;