tipc: add functionality to lookup multicast destination nodes
As a further preparation for the upcoming 'replicast' functionality, we add some necessary structs and functions for looking up and returning a list of all nodes that host destinations for a given multicast message. 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>
This commit is contained in:

committed by
David S. Miller

parent
9999974a83
commit
2ae0b8af1f
@@ -39,9 +39,8 @@
|
||||
#include "socket.h"
|
||||
#include "msg.h"
|
||||
#include "bcast.h"
|
||||
#include "name_distr.h"
|
||||
#include "link.h"
|
||||
#include "node.h"
|
||||
#include "name_table.h"
|
||||
|
||||
#define BCLINK_WIN_DEFAULT 50 /* bcast link window size (default) */
|
||||
#define BCLINK_WIN_MIN 32 /* bcast minimum link window size */
|
||||
@@ -434,3 +433,33 @@ void tipc_bcast_stop(struct net *net)
|
||||
kfree(tn->bcbase);
|
||||
kfree(tn->bcl);
|
||||
}
|
||||
|
||||
void tipc_nlist_init(struct tipc_nlist *nl, u32 self)
|
||||
{
|
||||
memset(nl, 0, sizeof(*nl));
|
||||
INIT_LIST_HEAD(&nl->list);
|
||||
nl->self = self;
|
||||
}
|
||||
|
||||
void tipc_nlist_add(struct tipc_nlist *nl, u32 node)
|
||||
{
|
||||
if (node == nl->self)
|
||||
nl->local = true;
|
||||
else if (u32_push(&nl->list, node))
|
||||
nl->remote++;
|
||||
}
|
||||
|
||||
void tipc_nlist_del(struct tipc_nlist *nl, u32 node)
|
||||
{
|
||||
if (node == nl->self)
|
||||
nl->local = false;
|
||||
else if (u32_del(&nl->list, node))
|
||||
nl->remote--;
|
||||
}
|
||||
|
||||
void tipc_nlist_purge(struct tipc_nlist *nl)
|
||||
{
|
||||
u32_list_purge(&nl->list);
|
||||
nl->remote = 0;
|
||||
nl->local = 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user