]> git.baikalelectronics.ru Git - kernel.git/commit
tipc: improve groupcast scope handling
authorJon Maloy <jon.maloy@ericsson.com>
Mon, 8 Jan 2018 20:03:30 +0000 (21:03 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Jan 2018 17:35:58 +0000 (12:35 -0500)
commitf5143fc9f7b3eb4c2fd4f397803461d539d81c84
tree04a2df7d400b7aa4fbb0028d033bbace6e0ebdcc
parentf2cba1cb39a36f4bcab3e526289aa689e64ad1d3
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.

Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/tipc.h
net/tipc/group.c
net/tipc/name_table.c
net/tipc/name_table.h
net/tipc/server.c
net/tipc/server.h
net/tipc/socket.c
net/tipc/subscr.c
net/tipc/subscr.h