[pve-devel] [PATCH 4/4] add utility to fetch the socket family for a hostname

Wolfgang Bumiller w.bumiller at proxmox.com
Fri May 8 12:24:44 CEST 2015


---
 src/PVE/Tools.pm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
index 75ca5a6..0e1af09 100644
--- a/src/PVE/Tools.pm
+++ b/src/PVE/Tools.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use POSIX qw(EINTR);
 use IO::Socket::IP;
-use Socket qw(AF_INET AF_INET6);
+use Socket qw(AF_INET AF_INET6 AI_ALL AI_V4MAPPED);
 use IO::Select;
 use File::Basename;
 use File::Path qw(make_path);
@@ -1052,4 +1052,14 @@ sub unpack_sockaddr_in46 {
     return ($family, $port, $host);
 }
 
+sub get_host_address_family {
+    my ($hostname, $socktype) = @_;
+    my %hints = ( flags => AI_V4MAPPED | AI_ALL,
+		  socktype => $socktype );
+    my ($err, @res) = Socket::getaddrinfo($hostname, '0', \%hints);
+    die "failed to resolve $hostname: $err\n" if $err;
+
+    return ${res[0]}->{family};
+}
+
 1;
-- 
2.1.4




More information about the pve-devel mailing list