diff options
author | Martin Schwenke <martin@meltin.net> | 2015-02-20 12:34:25 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2015-04-07 07:43:13 +0200 |
commit | 1ef1cfdc4d6b923357630451177fdcde1d616e87 (patch) | |
tree | c388370333903583c71f6a0c847c6ec388f1168e /ctdb/common | |
parent | dd52d82c73b26a3fed6dfd4aaf7d51f576d019d9 (diff) | |
download | samba-1ef1cfdc4d6b923357630451177fdcde1d616e87.tar.gz |
ctdb-common: Move ctdb_node_list_to_map() to utilities
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb/common')
-rw-r--r-- | ctdb/common/ctdb_util.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/ctdb/common/ctdb_util.c b/ctdb/common/ctdb_util.c index 76fb06d5606..8e2e430da71 100644 --- a/ctdb/common/ctdb_util.c +++ b/ctdb/common/ctdb_util.c @@ -579,6 +579,33 @@ struct ctdb_node_map *ctdb_read_nodes_file(TALLOC_CTX *mem_ctx, return ret; } +struct ctdb_node_map * +ctdb_node_list_to_map(struct ctdb_node **nodes, uint32_t num_nodes, + TALLOC_CTX *mem_ctx) +{ + uint32_t i; + size_t size; + struct ctdb_node_map *node_map; + + size = offsetof(struct ctdb_node_map, nodes) + + num_nodes * sizeof(struct ctdb_node_and_flags); + node_map = (struct ctdb_node_map *)talloc_zero_size(mem_ctx, size); + if (node_map == NULL) { + DEBUG(DEBUG_ERR, + (__location__ " Failed to allocate nodemap array\n")); + return NULL; + } + + node_map->num = num_nodes; + for (i=0; i<num_nodes; i++) { + node_map->nodes[i].addr = nodes[i]->address; + node_map->nodes[i].pnn = nodes[i]->pnn; + node_map->nodes[i].flags = nodes[i]->flags; + } + + return node_map; +} + const char *ctdb_eventscript_call_names[] = { "init", "setup", |