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:
committed by
Dietmar Maurer
parent
f5640e7d3b
commit
c67daeac17
@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user