/*
-
+ get list of public IPs
*/
int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA *outdata)
{
len = offsetof(struct ctdb_all_public_ips, ips) + ctdb->num_nodes*sizeof(struct ctdb_public_ip);
- ips = talloc_size(outdata, len);
+ ips = talloc_zero_size(outdata, len);
CTDB_NO_MEMORY(ctdb, ips);
outdata->dsize = len;
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);
+ if (ctdb->nodes[i]->public_address) {
+ inet_aton(ctdb->nodes[i]->public_address, &ips->ips[i].sin.sin_addr);
+ }
}
return 0;