diff options
-rw-r--r-- | include/uapi/linux/tipc.h | 30 | ||||
-rw-r--r-- | net/tipc/addr.h | 5 | ||||
-rw-r--r-- | net/tipc/bearer.c | 4 |
3 files changed, 29 insertions, 10 deletions
diff --git a/include/uapi/linux/tipc.h b/include/uapi/linux/tipc.h index 6f71b9b41595..bf049e8fe31b 100644 --- a/include/uapi/linux/tipc.h +++ b/include/uapi/linux/tipc.h | |||
@@ -60,26 +60,48 @@ struct tipc_name_seq { | |||
60 | __u32 upper; | 60 | __u32 upper; |
61 | }; | 61 | }; |
62 | 62 | ||
63 | /* TIPC Address Size, Offset, Mask specification for Z.C.N | ||
64 | */ | ||
65 | #define TIPC_NODE_BITS 12 | ||
66 | #define TIPC_CLUSTER_BITS 12 | ||
67 | #define TIPC_ZONE_BITS 8 | ||
68 | |||
69 | #define TIPC_NODE_OFFSET 0 | ||
70 | #define TIPC_CLUSTER_OFFSET TIPC_NODE_BITS | ||
71 | #define TIPC_ZONE_OFFSET (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS) | ||
72 | |||
73 | #define TIPC_NODE_SIZE ((1UL << TIPC_NODE_BITS) - 1) | ||
74 | #define TIPC_CLUSTER_SIZE ((1UL << TIPC_CLUSTER_BITS) - 1) | ||
75 | #define TIPC_ZONE_SIZE ((1UL << TIPC_ZONE_BITS) - 1) | ||
76 | |||
77 | #define TIPC_NODE_MASK (TIPC_NODE_SIZE << TIPC_NODE_OFFSET) | ||
78 | #define TIPC_CLUSTER_MASK (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET) | ||
79 | #define TIPC_ZONE_MASK (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET) | ||
80 | |||
81 | #define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK) | ||
82 | |||
63 | static inline __u32 tipc_addr(unsigned int zone, | 83 | static inline __u32 tipc_addr(unsigned int zone, |
64 | unsigned int cluster, | 84 | unsigned int cluster, |
65 | unsigned int node) | 85 | unsigned int node) |
66 | { | 86 | { |
67 | return (zone << 24) | (cluster << 12) | node; | 87 | return (zone << TIPC_ZONE_OFFSET) | |
88 | (cluster << TIPC_CLUSTER_OFFSET) | | ||
89 | node; | ||
68 | } | 90 | } |
69 | 91 | ||
70 | static inline unsigned int tipc_zone(__u32 addr) | 92 | static inline unsigned int tipc_zone(__u32 addr) |
71 | { | 93 | { |
72 | return addr >> 24; | 94 | return addr >> TIPC_ZONE_OFFSET; |
73 | } | 95 | } |
74 | 96 | ||
75 | static inline unsigned int tipc_cluster(__u32 addr) | 97 | static inline unsigned int tipc_cluster(__u32 addr) |
76 | { | 98 | { |
77 | return (addr >> 12) & 0xfff; | 99 | return (addr & TIPC_CLUSTER_MASK) >> TIPC_CLUSTER_OFFSET; |
78 | } | 100 | } |
79 | 101 | ||
80 | static inline unsigned int tipc_node(__u32 addr) | 102 | static inline unsigned int tipc_node(__u32 addr) |
81 | { | 103 | { |
82 | return addr & 0xfff; | 104 | return addr & TIPC_NODE_MASK; |
83 | } | 105 | } |
84 | 106 | ||
85 | /* | 107 | /* |
diff --git a/net/tipc/addr.h b/net/tipc/addr.h index 64f4004a6fac..bebb347803ce 100644 --- a/net/tipc/addr.h +++ b/net/tipc/addr.h | |||
@@ -43,9 +43,6 @@ | |||
43 | #include <net/netns/generic.h> | 43 | #include <net/netns/generic.h> |
44 | #include "core.h" | 44 | #include "core.h" |
45 | 45 | ||
46 | #define TIPC_ZONE_MASK 0xff000000u | ||
47 | #define TIPC_CLUSTER_MASK 0xfffff000u | ||
48 | |||
49 | static inline u32 tipc_own_addr(struct net *net) | 46 | static inline u32 tipc_own_addr(struct net *net) |
50 | { | 47 | { |
51 | struct tipc_net *tn = net_generic(net, tipc_net_id); | 48 | struct tipc_net *tn = net_generic(net, tipc_net_id); |
@@ -60,7 +57,7 @@ static inline u32 tipc_zone_mask(u32 addr) | |||
60 | 57 | ||
61 | static inline u32 tipc_cluster_mask(u32 addr) | 58 | static inline u32 tipc_cluster_mask(u32 addr) |
62 | { | 59 | { |
63 | return addr & TIPC_CLUSTER_MASK; | 60 | return addr & TIPC_ZONE_CLUSTER_MASK; |
64 | } | 61 | } |
65 | 62 | ||
66 | u32 tipc_own_addr(struct net *net); | 63 | u32 tipc_own_addr(struct net *net); |
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 4131d5a86f55..65b0998a9bab 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
@@ -225,7 +225,7 @@ static int tipc_enable_bearer(struct net *net, const char *name, | |||
225 | if (tipc_addr_domain_valid(disc_domain) && | 225 | if (tipc_addr_domain_valid(disc_domain) && |
226 | (disc_domain != tn->own_addr)) { | 226 | (disc_domain != tn->own_addr)) { |
227 | if (tipc_in_scope(disc_domain, tn->own_addr)) { | 227 | if (tipc_in_scope(disc_domain, tn->own_addr)) { |
228 | disc_domain = tn->own_addr & TIPC_CLUSTER_MASK; | 228 | disc_domain = tn->own_addr & TIPC_ZONE_CLUSTER_MASK; |
229 | res = 0; /* accept any node in own cluster */ | 229 | res = 0; /* accept any node in own cluster */ |
230 | } else if (in_own_cluster_exact(net, disc_domain)) | 230 | } else if (in_own_cluster_exact(net, disc_domain)) |
231 | res = 0; /* accept specified node in own cluster */ | 231 | 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) | |||
832 | u32 prio; | 832 | u32 prio; |
833 | 833 | ||
834 | prio = TIPC_MEDIA_LINK_PRI; | 834 | prio = TIPC_MEDIA_LINK_PRI; |
835 | domain = tn->own_addr & TIPC_CLUSTER_MASK; | 835 | domain = tn->own_addr & TIPC_ZONE_CLUSTER_MASK; |
836 | 836 | ||
837 | if (!info->attrs[TIPC_NLA_BEARER]) | 837 | if (!info->attrs[TIPC_NLA_BEARER]) |
838 | return -EINVAL; | 838 | return -EINVAL; |