From dfc3b8855d0a740d4f5218fcda4b3f64d4d6cd17 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Mon, 12 Sep 2016 15:49:03 +1000 Subject: [PATCH] ctdb-ipalloc: Whether IPs can be hosted need not depend on merged IP list Merged IP list won't be available here... BUG: https://bugzilla.samba.org/show_bug.cgi?id=12254 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs --- ctdb/server/ipalloc.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/ctdb/server/ipalloc.c b/ctdb/server/ipalloc.c index 4f86d6e243d2..ccd12e77b284 100644 --- a/ctdb/server/ipalloc.c +++ b/ctdb/server/ipalloc.c @@ -245,14 +245,18 @@ bool ipalloc_set_public_ips(struct ipalloc_state *ipalloc_state, bool ipalloc_can_host_ips(struct ipalloc_state *ipalloc_state) { int i; - struct public_ip_list *ip_list; - - for (ip_list = ipalloc_state->all_ips; - ip_list != NULL; - ip_list = ip_list->next) { - if (ip_list->pnn != -1) { - return true; + for (i=0; i < ipalloc_state->num; i++) { + struct ctdb_public_ip_list *ips = + ipalloc_state->known_public_ips; + if (ips[i].num != 0) { + int j; + /* Succeed if an address is hosted on node i */ + for (j=0; j < ips[i].num; j++) { + if (ips[i].ip[j].pnn == i) { + return true; + } + } } } -- 2.34.1