diff options
Diffstat (limited to 'source4/cluster/cluster.c')
-rw-r--r-- | source4/cluster/cluster.c | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/source4/cluster/cluster.c b/source4/cluster/cluster.c index fef5bce0d1..0bd4649376 100644 --- a/source4/cluster/cluster.c +++ b/source4/cluster/cluster.c @@ -22,16 +22,39 @@ #include "includes.h" #include "cluster/cluster.h" +#include "cluster/cluster_private.h" + +static struct cluster_ops *ops; + +/* set cluster operations */ +void cluster_set_ops(struct cluster_ops *new_ops) +{ + ops = new_ops; +} + +/* + not a nice abstraction :( +*/ +void *cluster_private(void) +{ + return ops->private; +} + +/* by default use the local ops */ +static void cluster_init(void) +{ + if (ops == NULL) cluster_local_init(); +} + + /* server a server_id for the local node */ struct server_id cluster_id(uint32_t id) { - struct server_id server_id; - ZERO_STRUCT(server_id); - server_id.id = id; - return server_id; + cluster_init(); + return ops->cluster_id(ops, id); } @@ -40,6 +63,6 @@ struct server_id cluster_id(uint32_t id) */ const char *cluster_id_string(TALLOC_CTX *mem_ctx, struct server_id id) { - return talloc_asprintf(mem_ctx, "%u.%u", id.node, id.id); + cluster_init(); + return ops->cluster_id_string(ops, mem_ctx, id); } - |