#define CTDB_ARP_REPEAT 3
/* Flags used in IP allocation algorithms. */
-struct ctdb_ipflags {
- bool noiptakeover;
- bool noiphost;
-};
-
enum ipalloc_algorithm {
IPALLOC_DETERMINISTIC,
IPALLOC_NONDETERMINISTIC,
/* Arrays with data for each node */
struct ctdb_public_ip_list_old **known_public_ips;
struct ctdb_public_ip_list_old **available_public_ips;
- struct ctdb_ipflags *ipflags;
+ bool *noiptakeover;
+ bool *noiphost;
enum ipalloc_algorithm algorithm;
uint32_t no_ip_failback;
struct ctdb_public_ip_list_old *public_ips;
int i;
- if (ipalloc_state->ipflags[pnn].noiphost) {
+ if (ipalloc_state->noiphost[pnn]) {
return false;
}
int32_t pnn,
struct public_ip_list *ip)
{
- if (ipalloc_state->ipflags[pnn].noiptakeover) {
+ if (ipalloc_state->noiptakeover[pnn]) {
return false;
}
{
int i;
- /* IP flags cleared at this point - implicit due to talloc_zero */
-
for (i=0;i<nodemap->num;i++) {
/* Can not take IPs on node with NoIPTakeover set */
if (tval_noiptakeover[i] != 0) {
- ipalloc_state->ipflags[i].noiptakeover = true;
+ ipalloc_state->noiptakeover[i] = true;
}
/* Can not host IPs on INACTIVE node */
if (nodemap->nodes[i].flags & NODE_FLAGS_INACTIVE) {
- ipalloc_state->ipflags[i].noiphost = true;
+ ipalloc_state->noiphost[i] = true;
}
}
*/
for (i=0;i<nodemap->num;i++) {
if (tval_noiphostonalldisabled[i] != 0) {
- ipalloc_state->ipflags[i].noiphost = true;
+ ipalloc_state->noiphost[i] = true;
}
}
} else {
*/
for (i=0;i<nodemap->num;i++) {
if (nodemap->nodes[i].flags & NODE_FLAGS_DISABLED) {
- ipalloc_state->ipflags[i].noiphost = true;
+ ipalloc_state->noiphost[i] = true;
}
}
}
talloc_free(ipalloc_state);
return NULL;
}
- ipalloc_state->ipflags =
+ ipalloc_state->noiptakeover =
talloc_zero_array(ipalloc_state,
- struct ctdb_ipflags,
+ bool,
ipalloc_state->num);
- if (ipalloc_state->ipflags == NULL) {
- DEBUG(DEBUG_ERR, (__location__ " out of memory\n"));
+ if (ipalloc_state->noiptakeover == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ " Out of memory\n"));
+ talloc_free(ipalloc_state);
+ return NULL;
+ }
+ ipalloc_state->noiphost =
+ talloc_zero_array(ipalloc_state,
+ bool,
+ ipalloc_state->num);
+ if (ipalloc_state->noiphost == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ " Out of memory\n"));
talloc_free(ipalloc_state);
return NULL;
}