}
}
-static struct ipalloc_state *
-ipalloc_state_init(TALLOC_CTX *mem_ctx,
- uint32_t num_nodes,
- enum ipalloc_algorithm algorithm,
- bool no_ip_failback,
- uint32_t *force_rebalance_nodes)
-{
- struct ipalloc_state *ipalloc_state =
- talloc_zero(mem_ctx, struct ipalloc_state);
- if (ipalloc_state == NULL) {
- DEBUG(DEBUG_ERR, (__location__ " Out of memory\n"));
- return NULL;
- }
-
- ipalloc_state->num = num_nodes;
-
- ipalloc_state->noiptakeover =
- talloc_zero_array(ipalloc_state,
- bool,
- ipalloc_state->num);
- if (ipalloc_state->noiptakeover == NULL) {
- DEBUG(DEBUG_ERR, (__location__ " Out of memory\n"));
- goto fail;
- }
- 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"));
- goto fail;
- }
-
- ipalloc_state->algorithm = algorithm;
- ipalloc_state->no_ip_failback = no_ip_failback;
- ipalloc_state->force_rebalance_nodes = force_rebalance_nodes;
-
- return ipalloc_state;
-fail:
- talloc_free(ipalloc_state);
- return NULL;
-}
-
struct takeover_callback_data {
uint32_t num_nodes;
unsigned int *fail_count;
#include "server/ipalloc_private.h"
+/* Initialise main ipalloc state and sub-structures */
+struct ipalloc_state *
+ipalloc_state_init(TALLOC_CTX *mem_ctx,
+ uint32_t num_nodes,
+ enum ipalloc_algorithm algorithm,
+ bool no_ip_failback,
+ uint32_t *force_rebalance_nodes)
+{
+ struct ipalloc_state *ipalloc_state =
+ talloc_zero(mem_ctx, struct ipalloc_state);
+ if (ipalloc_state == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ " Out of memory\n"));
+ return NULL;
+ }
+
+ ipalloc_state->num = num_nodes;
+
+ ipalloc_state->noiptakeover =
+ talloc_zero_array(ipalloc_state,
+ bool,
+ ipalloc_state->num);
+ if (ipalloc_state->noiptakeover == NULL) {
+ DEBUG(DEBUG_ERR, (__location__ " Out of memory\n"));
+ goto fail;
+ }
+ 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"));
+ goto fail;
+ }
+
+ ipalloc_state->algorithm = algorithm;
+ ipalloc_state->no_ip_failback = no_ip_failback;
+ ipalloc_state->force_rebalance_nodes = force_rebalance_nodes;
+
+ return ipalloc_state;
+fail:
+ talloc_free(ipalloc_state);
+ return NULL;
+}
+
static void *add_ip_callback(void *parm, void *data)
{
struct public_ip_list *this_ip = parm;
#ifndef __CTDB_IPALLOC_H__
#define __CTDB_IPALLOC_H__
+#include <talloc.h>
+
#include "replace.h"
#include "system/network.h"
uint32_t *force_rebalance_nodes;
};
+struct ipalloc_state * ipalloc_state_init(TALLOC_CTX *mem_ctx,
+ uint32_t num_nodes,
+ enum ipalloc_algorithm algorithm,
+ bool no_ip_failback,
+ uint32_t *force_rebalance_nodes);
+
bool ipalloc_set_public_ips(struct ipalloc_state *ipalloc_state,
struct ctdb_public_ip_list *known_ips,
struct ctdb_public_ip_list *available_ips);