summaryrefslogtreecommitdiffstats
path: root/ctdb/common/ctdb_util.c
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2014-11-25 12:38:23 +1100
committerMartin Schwenke <martins@samba.org>2014-12-05 21:02:40 +0100
commite3c59d83d0ace9d7421d40d33fe917fb82bb38d8 (patch)
treeefaf1b1ba1b1d3c65f4539cb067294f5e660cfa2 /ctdb/common/ctdb_util.c
parentd0b2375c3d754da3cd68e34617ab3edd36e9317b (diff)
downloadsamba-e3c59d83d0ace9d7421d40d33fe917fb82bb38d8.tar.gz
samba-e3c59d83d0ace9d7421d40d33fe917fb82bb38d8.tar.xz
samba-e3c59d83d0ace9d7421d40d33fe917fb82bb38d8.zip
ctdb-daemon: Fix IP address comparisons for IPv6 addresses
Before storing node IP address, convert into the correct abbreviated string form for IPv6 addresses. Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/common/ctdb_util.c')
-rw-r--r--ctdb/common/ctdb_util.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/ctdb/common/ctdb_util.c b/ctdb/common/ctdb_util.c
index bdff4255eb..137e0a8a09 100644
--- a/ctdb/common/ctdb_util.c
+++ b/ctdb/common/ctdb_util.c
@@ -100,12 +100,20 @@ int ctdb_parse_address(struct ctdb_context *ctdb,
struct ctdb_address *address)
{
struct servent *se;
+ ctdb_sock_addr addr;
setservent(0);
se = getservbyname("ctdb", "tcp");
endservent();
-
- address->address = talloc_strdup(mem_ctx, str);
+
+ /* Parse IP address and re-convert to string. This ensure correct
+ * string form for IPv6 addresses.
+ */
+ if (! parse_ip(str, NULL, 0, &addr)) {
+ return -1;
+ }
+
+ address->address = talloc_strdup(mem_ctx, ctdb_addr_to_str(&addr));
CTDB_NO_MEMORY(ctdb, address->address);
if (se == NULL) {