diff options
author | Amitay Isaacs <amitay@gmail.com> | 2014-11-25 12:38:23 +1100 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2014-12-05 21:02:40 +0100 |
commit | e3c59d83d0ace9d7421d40d33fe917fb82bb38d8 (patch) | |
tree | efaf1b1ba1b1d3c65f4539cb067294f5e660cfa2 | |
parent | d0b2375c3d754da3cd68e34617ab3edd36e9317b (diff) | |
download | samba-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>
-rw-r--r-- | ctdb/common/ctdb_util.c | 12 |
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) { |