diff options
author | Jon Paul Maloy <jon.maloy@ericsson.com> | 2017-01-18 19:50:52 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-01-20 18:10:17 +0100 |
commit | a853e4c6d0843729e1f25a7a7beff168e1dd7420 (patch) | |
tree | 3725ef60bc42bf5c06873fd2962f37bb2ecf0ba1 /net/tipc/msg.c | |
parent | tipc: add functionality to lookup multicast destination nodes (diff) | |
download | linux-a853e4c6d0843729e1f25a7a7beff168e1dd7420.tar.xz linux-a853e4c6d0843729e1f25a7a7beff168e1dd7420.zip |
tipc: introduce replicast as transport option for multicast
TIPC multicast messages are currently carried over a reliable
'broadcast link', making use of the underlying media's ability to
transport packets as L2 broadcast or IP multicast to all nodes in
the cluster.
When the used bearer is lacking that ability, we can instead emulate
the broadcast service by replicating and sending the packets over as
many unicast links as needed to reach all identified destinations.
We now introduce a new TIPC link-level 'replicast' service that does
this.
Reviewed-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
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>
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r-- | net/tipc/msg.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index ab02d0742476..312ef7de57d7 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c @@ -607,6 +607,23 @@ error: return false; } +bool tipc_msg_pskb_copy(u32 dst, struct sk_buff_head *msg, + struct sk_buff_head *cpy) +{ + struct sk_buff *skb, *_skb; + + skb_queue_walk(msg, skb) { + _skb = pskb_copy(skb, GFP_ATOMIC); + if (!_skb) { + __skb_queue_purge(cpy); + return false; + } + msg_set_destnode(buf_msg(_skb), dst); + __skb_queue_tail(cpy, _skb); + } + return true; +} + /* tipc_skb_queue_sorted(); sort pkt into list according to sequence number * @list: list to be appended to * @seqno: sequence number of buffer to add |