]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
merge from ronnie
authorAndrew Tridgell <tridge@samba.org>
Mon, 4 Jun 2007 12:13:59 +0000 (22:13 +1000)
committerAndrew Tridgell <tridge@samba.org>
Mon, 4 Jun 2007 12:13:59 +0000 (22:13 +1000)
(This used to be ctdb commit 531d7ea7aca3116e78a4502a1c8b75a3fb764a4f)

1  2 
ctdb/include/ctdb_private.h
ctdb/takeover/ctdb_takeover.c

Simple merge
index af250f570bc425a2eed46603fe0f988e2d855ecc,27f40eee1487036e5b9dffefecb333a8e9d27f78..ced2324909494bcb35718b03816f81ba13c68738
@@@ -431,9 -439,17 +439,14 @@@ int ctdb_takeover_run(struct ctdb_conte
                /* tell this node to delete all of the aliases that it should not have */
                for (j=0;j<nodemap->num;j++) {
                        if (ctdb->nodes[j]->takeover_vnn != nodemap->nodes[i].vnn) {
 -#ifdef HAVE_SOCK_SIN_LEN
 -                              ip.sin.sin_len = sizeof(*sin);
 -#endif
+                               ip.vnn = j;
+                               ip.takeover_vnn = ctdb->nodes[j]->takeover_vnn;
+                               ip.sin.sin_family = AF_INET;
+                               inet_aton(ctdb->nodes[j]->public_address, &ip.sin.sin_addr);
                                ret = ctdb_ctrl_release_ip(ctdb, TAKEOVER_TIMEOUT(),
                                                           nodemap->nodes[i].vnn, 
-                                                          ctdb->nodes[j]->public_address);
+                                                          &ip);
                                if (ret != 0) {
                                        DEBUG(0,("Failed to tell vnn %u to release IP %s\n",
                                                 nodemap->nodes[i].vnn,
                        /* this IP won't be taken over */
                        continue;
                }
 -#ifdef HAVE_SOCK_SIN_LEN
 -              ip.sin.sin_len = sizeof(*sin);
 -#endif
+               ip.vnn = i;
+               ip.takeover_vnn = ctdb->nodes[i]->takeover_vnn;
+               ip.sin.sin_family = AF_INET;
+               inet_aton(ctdb->nodes[i]->public_address, &ip.sin.sin_addr);
                ret = ctdb_ctrl_takeover_ip(ctdb, TAKEOVER_TIMEOUT(), 
                                            ctdb->nodes[i]->takeover_vnn, 
-                                           ctdb->nodes[i]->public_address);
+                                           &ip);
                if (ret != 0) {
                        DEBUG(0,("Failed asking vnn %u to take over IP %s\n",
                                 ctdb->nodes[i]->takeover_vnn, 
@@@ -671,3 -695,34 +689,31 @@@ void ctdb_release_all_ips(struct ctdb_c
                }
        }
  }
 -#ifdef HAVE_SOCK_SIN_LEN
 -              ips->ips[i].sin.sin_len = sizeof(struct sockaddr_in);
 -#endif
+ /*
+   
+  */
+ int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA *outdata)
+ {
+       int i, len;
+       struct ctdb_all_public_ips *ips;
+       len = offsetof(struct ctdb_all_public_ips, ips) + ctdb->num_nodes*sizeof(struct ctdb_public_ip);
+       ips = talloc_size(outdata, len);
+       CTDB_NO_MEMORY(ctdb, ips);
+       outdata->dsize = len;
+       outdata->dptr  = (uint8_t *)ips;
+       ips->num = ctdb->num_nodes;
+       for(i=0;i<ctdb->num_nodes;i++){
+               ips->ips[i].vnn = i;
+               ips->ips[i].takeover_vnn = ctdb->nodes[i]->takeover_vnn;
+               ips->ips[i].sin.sin_family = AF_INET;
+               inet_aton(ctdb->nodes[i]->public_address, &ips->ips[i].sin.sin_addr);
+       }
+       return 0;
+ }