History

tipc: improve groupcast scope handling

When a member joins a group, it also indicates a binding scope. This makes it possible to create both node local groups, invisible to other nodes, as well as cluster global groups, visible everywhere. In order to avoid that different members end up having permanently differing views of group size and memberhip, we must inhibit locally and globally bound members from joining the same group. We do this by using the binding scope as an additional separator between groups. I.e., a member must ignore all membership events from sockets using a different scope than itself, and all lookups for message destinations must require an exact match between the message's lookup scope and the potential target's binding scope. Apart from making it possible to create local groups using the same identity on different nodes, a side effect of this is that it now also becomes possible to create a cluster global group with the same identity across the same nodes, without interfering with the local groups.

Jon Maloy committed 8 years ago

Commit 232d07b1 parent 83485009 files · +99 −75Browse files

Showing the changes to include/uapi/linux (1 of 9 files). Show all

Unified · Split

include/uapi/linux/tipc.h+3−4
@@ -117,10 +117,9 @@ static inline unsigned int tipc_node(__u32 addr) · 116 unmodified lines
117117 /*
118118 * Publication scopes when binding port names and port name sequences
119119 */
120−
121−#define TIPC_ZONE_SCOPE 1
122−#define TIPC_CLUSTER_SCOPE 2
123−#define TIPC_NODE_SCOPE 3
120+#define TIPC_ZONE_SCOPE 1
121+#define TIPC_CLUSTER_SCOPE 2
122+#define TIPC_NODE_SCOPE 3
124123
125124 /*
126125 * Limiting values for messages