use strict;
use warnings;
use POSIX qw(EINTR);
-use IO::Socket::INET;
+use IO::Socket::IP;
+use Socket qw(AF_INET AF_INET6);
use IO::Select;
use File::Basename;
use File::Path qw(make_path);
for (my $p = $range_start; $p < $range_end; $p++) {
next if $ports->{$p}; # reserved
- my $sock = IO::Socket::INET->new(Listen => 5,
- LocalAddr => '0.0.0.0',
- LocalPort => $p,
- ReuseAddr => 1,
- Proto => 0);
+ my $sock = IO::Socket::IP->new(Listen => 5,
+ LocalAddr => '0.0.0.0',
+ LocalPort => $p,
+ ReuseAddr => 1,
+ Proto => 0);
if ($sock) {
close($sock);
sub fnv31a_hex { return sprintf("%X", fnv31a(@_)); }
+sub unpack_sockaddr_in46 {
+ my ($sin) = @_;
+ my $family = Socket::sockaddr_family($sin);
+ my ($port, $host) = ($family == AF_INET6 ? Socket::unpack_sockaddr_in6($sin)
+ : Socket::unpack_sockaddr_in($sin));
+ return ($family, $port, $host);
+}
+
1;