[pve-devel] [PATCH 1/2] ipv6 support for Storage::resolv_server
Wolfgang Bumiller
w.bumiller at proxmox.com
Wed May 20 15:19:41 CEST 2015
While in posix gethostbyname(3) does support ipv6, perl's gethostbyname
usually returns wrong results for ipv6 hosts, 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 b542ee6..b0c63a1 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;
}
--
2.1.4
More information about the pve-devel
mailing list