From: Andrew Tridgell Date: Thu, 7 Jun 2007 06:48:31 +0000 (+1000) Subject: handle CTDB_CURRENT_NODE in ban commands X-Git-Tag: tevent-0.9.20~348^2~2540 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cb4c33cc68e8260da3a0629cd5b88d6259781ae1;p=thirdparty%2Fsamba.git handle CTDB_CURRENT_NODE in ban commands (This used to be ctdb commit fefb53f1d22c5458a1e107f8352818aee87983de) --- diff --git a/ctdb/common/ctdb_recoverd.c b/ctdb/common/ctdb_recoverd.c index d78716986e4..9ddbad787f6 100644 --- a/ctdb/common/ctdb_recoverd.c +++ b/ctdb/common/ctdb_recoverd.c @@ -54,6 +54,11 @@ static void ctdb_unban_node(struct ctdb_recoverd *rec, uint32_t vnn) { struct ctdb_context *ctdb = rec->ctdb; + if (!ctdb_validate_vnn(ctdb, vnn)) { + DEBUG(0,("Bad vnn %u in ctdb_ban_node\n", vnn)); + return; + } + if (rec->banned_nodes[vnn] == NULL) { return; } @@ -85,6 +90,11 @@ static void ctdb_ban_node(struct ctdb_recoverd *rec, uint32_t vnn, uint32_t ban_ { struct ctdb_context *ctdb = rec->ctdb; + if (!ctdb_validate_vnn(ctdb, vnn)) { + DEBUG(0,("Bad vnn %u in ctdb_ban_node\n", vnn)); + return; + } + ctdb_ctrl_modflags(ctdb, CONTROL_TIMEOUT(), vnn, NODE_FLAGS_BANNED, 0); rec->banned_nodes[vnn] = talloc(rec, struct ban_state); diff --git a/ctdb/tools/ctdb_control.c b/ctdb/tools/ctdb_control.c index 04a29e3c081..2b6a37dced4 100644 --- a/ctdb/tools/ctdb_control.c +++ b/ctdb/tools/ctdb_control.c @@ -462,6 +462,10 @@ static int control_ban(struct ctdb_context *ctdb, int argc, const char **argv) usage(); } + if (options.vnn == CTDB_CURRENT_NODE) { + options.vnn = ctdb_ctrl_getvnn(ctdb, TIMELIMIT(), options.vnn); + } + if (options.vnn == CTDB_BROADCAST_ALL) { uint32_t *nodes; uint32_t num_nodes; @@ -512,6 +516,10 @@ static int control_unban(struct ctdb_context *ctdb, int argc, const char **argv) uint32_t recmaster; TDB_DATA data; + if (options.vnn == CTDB_CURRENT_NODE) { + options.vnn = ctdb_ctrl_getvnn(ctdb, TIMELIMIT(), options.vnn); + } + if (options.vnn == CTDB_BROADCAST_ALL) { uint32_t *nodes; uint32_t num_nodes;