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.
This commit is contained in:
Wolfgang Bumiller
2015-05-12 09:42:37 +02:00
committed by Dietmar Maurer
parent f5640e7d3b
commit c67daeac17

View File

@ -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;
}