diff -Naur A/lib/Net/SNMP/Transport/IPv6.pm B/lib/Net/SNMP/Transport/IPv6.pm --- A/lib/Net/SNMP/Transport/IPv6.pm 2010-09-10 02:02:45.000000000 +0200 +++ B/lib/Net/SNMP/Transport/IPv6.pm 2023-06-14 09:27:57.736399948 +0200 @@ -19,9 +19,9 @@ use Net::SNMP::Transport qw( DEBUG_INFO ); -use Socket6 0.23 qw( - PF_INET6 AF_INET6 in6addr_any in6addr_loopback getaddrinfo - pack_sockaddr_in6_all unpack_sockaddr_in6_all inet_pton inet_ntop +use Socket qw( + PF_INET6 AF_INET6 IN6ADDR_ANY IN6ADDR_LOOPBACK getaddrinfo + pack_sockaddr_in6 unpack_sockaddr_in6 inet_pton inet_ntop ); ## Version of the Net::SNMP::Transport::IPv6 module @@ -89,12 +89,12 @@ sub _addr_any { - return in6addr_any; + return IN6ADDR_ANY; } sub _addr_loopback { - return in6addr_loopback; + return IN6ADDR_LOOPBACK; } sub _hostname_resolve @@ -117,23 +117,22 @@ # Resolve the address. - my @info = getaddrinfo(($_[1] = $host), q{}, PF_INET6); + my ($err, $info) = getaddrinfo(($_[1] = $host), q{}, {'family' => PF_INET6}); - if (@info >= 5) { + if (! $err) { if ($host =~ s/(.*)%.*$/$1/) { #
% $_[1] = $1; } - while (@info >= 5) { - if ($info[0] == PF_INET6) { - $nh->{flowinfo} = $this->_flowinfo($info[3]); - $nh->{scope_id} ||= $this->_scope_id($info[3]); - return $nh->{addr} = $this->_addr($info[3]); + while (! $err) { + if ($info->{'family'} == PF_INET6) { + $nh->{flowinfo} = $this->_flowinfo($info->{'addr'}); + $nh->{scope_id} ||= $this->_scope_id($info->{'addr'}); + return $nh->{addr} = $this->_addr($info->{'addr'}); } - DEBUG_INFO('family = %d, sin = %s', $info[0], unpack 'H*', $info[3]); - splice @info, 0, 5; + DEBUG_INFO('family = %d, sin = %s', $info->{'family'}, unpack 'H*', $info->{'addr'}); } } else { - DEBUG_INFO('getaddrinfo(): %s', $info[0]); + DEBUG_INFO('getaddrinfo(): %s', $info->{'family'}); if ((my @host = split /:/, $host) == 2) { # : $_[1] = sprintf '[%s]:%s', @host; return $this->_hostname_resolve($_[1], $nh); @@ -156,9 +155,9 @@ sub _name_pack { - return pack_sockaddr_in6_all( - $_[1]->{port}, $_[1]->{flowinfo} || 0, - $_[1]->{addr}, $_[1]->{scope_id} || 0 + return pack_sockaddr_in6( + $_[1]->{port}, $_[1]->{addr}, + $_[1]->{scope_id} || 0, $_[1]->{flowinfo} || 0 ); } @@ -169,12 +168,12 @@ sub _addr { - return (unpack_sockaddr_in6_all($_[1]))[2]; + return (unpack_sockaddr_in6($_[1]))[1]; } sub _port { - return (unpack_sockaddr_in6_all($_[1]))[0]; + return (unpack_sockaddr_in6($_[1]))[0]; } sub _taddress @@ -193,12 +192,12 @@ sub _scope_id { - return (unpack_sockaddr_in6_all($_[1]))[3]; + return (unpack_sockaddr_in6($_[1]))[2]; } sub _flowinfo { - return (unpack_sockaddr_in6_all($_[1]))[1]; + return (unpack_sockaddr_in6($_[1]))[3]; } # ============================================================================