summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonnie Sahlberg <sahlberg@ronnie>2007-09-14 15:19:44 +1000
committerRonnie Sahlberg <sahlberg@ronnie>2007-09-14 15:19:44 +1000
commit2d0261afeb3946d4ab46cabc7f99ea04427cab40 (patch)
treefd0112191530145408a271a9459fc119e5498ef7
parent90a37c4fb4d56364780bcc0545991f177799ce82 (diff)
let ctdb ip only print the ip addresses known to the specified node
and not the entire cluster (This used to be ctdb commit eb1f67a56d752c9f42a9a26a6697a7ab8e668b3a)
-rw-r--r--ctdb/tools/ctdb.c60
1 files changed, 6 insertions, 54 deletions
diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c
index ca10aed0cc..e7d247f767 100644
--- a/ctdb/tools/ctdb.c
+++ b/ctdb/tools/ctdb.c
@@ -25,7 +25,6 @@
#include "cmdline.h"
#include "../include/ctdb.h"
#include "../include/ctdb_private.h"
-#include "../common/rb_tree.h"
static void usage(void);
@@ -521,73 +520,26 @@ static int tickle_tcp(struct ctdb_context *ctdb, int argc, const char **argv)
}
-static void *store_ip(void *p, void *d)
-{
- return p;
-}
-static void print_ip(void *param, void *data)
-{
- struct ctdb_public_ip *ip = (struct ctdb_public_ip *)data;
-
- if(options.machinereadable){
- printf(":%s:%d:\n", inet_ntoa(ip->sin.sin_addr), ip->pnn);
- } else {
- printf("%-16s %d\n", inet_ntoa(ip->sin.sin_addr), ip->pnn);
- }
-}
-
/*
display public ip status
*/
static int control_ip(struct ctdb_context *ctdb, int argc, const char **argv)
{
- int i, j, ret;
+ int i, ret;
TALLOC_CTX *tmp_ctx = talloc_new(ctdb);
- trbt_tree_t *tree;
- struct ctdb_node_map *nodemap=NULL;
struct ctdb_all_public_ips *ips;
- struct ctdb_public_ip *ip;
-
- ret = ctdb_ctrl_getnodemap(ctdb, TIMELIMIT(), options.pnn, tmp_ctx, &nodemap);
+ /* read the public ip list from this node */
+ ret = ctdb_ctrl_get_public_ips(ctdb, TIMELIMIT(), options.pnn, tmp_ctx, &ips);
if (ret != 0) {
- DEBUG(0, ("Unable to get nodemap from node %u\n", options.pnn));
+ DEBUG(0, ("Unable to get public ips from node %u\n", i));
talloc_free(tmp_ctx);
return ret;
}
- /* create a tree to store the public addresses in indexed by s_addr */
- tree = trbt_create(tmp_ctx, 0);
- CTDB_NO_MEMORY(ctdb, tree);
-
- for (i=0;i<nodemap->num;i++) {
- /* dont read the public ip list from disconnected nodes */
- if (nodemap->nodes[i].flags & NODE_FLAGS_DISCONNECTED) {
- continue;
- }
-
- /* read the public ip list from this node */
- ret = ctdb_ctrl_get_public_ips(ctdb, TIMELIMIT(), i, tmp_ctx, &ips);
- if (ret != 0) {
- DEBUG(0, ("Unable to get public ips from node %u\n", i));
- talloc_free(tmp_ctx);
- return ret;
- }
-
-
- /* store the public ip */
- for(j=0;j<ips->num;j++){
- ip = talloc_memdup(tmp_ctx, &ips->ips[j], sizeof(struct ctdb_public_ip));
- /* ntohl() so that we sort by the first octet */
- trbt_insert32_callback(tree, ntohl(ips->ips[j].sin.sin_addr.s_addr), store_ip, ip);
- }
- }
-
- /* traverse the tree and read back all the public ips one by one */
- if(options.machinereadable){
- printf(":Public IP:Node:\n");
+ for (i=0;i<ips->num;i++) {
+ printf("%s %d\n", inet_ntoa(ips->ips[i].sin.sin_addr), ips->ips[i].pnn);
}
- trbt_traversearray32(tree, 1, print_ip, NULL);
talloc_free(tmp_ctx);
return 0;