From c67daeac17df271c79a1ae2b07a69a87f92f3083 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 12 May 2015 09:42:37 +0200 Subject: [PATCH] ipv6 support for Storage::resolv_server While in posix gethostbyname(3) does support ipv6, perl's gethostbyname usually returns wrong results for names, or no results for ipv6 addresses. Since we provide a getaddrinfo helper already, we now use that instead. --- PVE/Storage.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/PVE/Storage.pm b/PVE/Storage.pm index 92c7d14..c1cf524 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -930,9 +930,14 @@ sub storage_info { sub resolv_server { my ($server) = @_; - my $packed_ip = gethostbyname($server); + my ($packed_ip, $family); + eval { + my @res = PVE::Tools::getaddrinfo_all($server); + $family = $res[0]->{family}; + $packed_ip = (PVE::Tools::unpack_sockaddr_in46($res[0]->{addr}))[2]; + }; if (defined $packed_ip) { - return inet_ntoa($packed_ip); + return inet_ntop($family, $packed_ip); } return undef; }