From cb4c33cc68e8260da3a0629cd5b88d6259781ae1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 7 Jun 2007 16:48:31 +1000 Subject: [PATCH] handle CTDB_CURRENT_NODE in ban commands (This used to be ctdb commit fefb53f1d22c5458a1e107f8352818aee87983de) --- ctdb/common/ctdb_recoverd.c | 10 ++++++++++ ctdb/tools/ctdb_control.c | 8 ++++++++ 2 files changed, 18 insertions(+) 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; -- 2.47.3