merge from ronnie
authorAndrew Tridgell <tridge@samba.org>
Fri, 14 Sep 2007 05:23:23 +0000 (15:23 +1000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 14 Sep 2007 05:23:23 +0000 (15:23 +1000)
1  2 
tools/ctdb.c

diff --cc tools/ctdb.c
index ca10aed0cceb35da671941d8373a71c534b85495,e7d247f767dac0a48a26d3700da2c7bbb542d6ca..b4f2ae575c3fc232ff87fbf2e19a70800291c3fc
@@@ -541,53 -525,21 +525,27 @@@ static int tickle_tcp(struct ctdb_conte
   */
  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));
++              DEBUG(0, ("Unable to get public ips from node %u\n", options.pnn));
                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);
-               }
++      if (options.machinereadable){
++              printf(":Public IP:Node:\n");
++      } else {
++              printf("Public IPs on node %u\n", options.pnn);
 +      }
 +
-       /* 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;