diff options
author | Andrew Tridgell <tridge@samba.org> | 2007-01-19 03:53:37 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:43:45 -0500 |
commit | 9d8c44af173c5266ea6c5eaf7772a21f8d3fb523 (patch) | |
tree | 1ccb55f563a03c4bd3e19e36883f0a06c3be3d57 /source4/cluster/cluster.c | |
parent | 630733e9ef9241df1b4d62b9fa6f32c721f9bfad (diff) | |
download | samba-9d8c44af173c5266ea6c5eaf7772a21f8d3fb523.tar.gz samba-9d8c44af173c5266ea6c5eaf7772a21f8d3fb523.tar.bz2 samba-9d8c44af173c5266ea6c5eaf7772a21f8d3fb523.zip |
r20887: allow the registration of multiple cluster backends
this is in preparation for ctdb
(This used to be commit 489f022175a1022bcca8053116362825daae5e40)
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); } - |