diff --git a/Changes b/Changes index d5cc0b3..0377c7d 100644 --- a/Changes +++ b/Changes @@ -1,9 +1,13 @@ Revision history for Perl extension NetAddr::IP -4.046 Thu Oct 6 20:20:33 PDT 2011 +4.047 Thu Oct 6 23:41:42 PDT 2011 + really correct missing reference in Util v1.39 + doc update only in Lite.pm v1.30 + +4.046 Thu Oct 6 20:20:33 PDT 2011 DEPRECATED corrected missing reference to inet_4map6 in Util v1.38 -4.045 Thu Oct 6 18:23:04 PDT 2011 +4.045 Thu Oct 6 18:23:04 PDT 2011 DEPRECATED updated NetAddr::IP::Util 1.37 addid isAnyIPv4, isNewIPv4, inet_4map6 revised naip_gethostbyname diff --git a/IP.pm b/IP.pm index f09a1ed..4b3dc92 100644 --- a/IP.pm +++ b/IP.pm @@ -34,7 +34,7 @@ @ISA = qw(Exporter NetAddr::IP::Lite); -$VERSION = do { sprintf " %d.%03d", (q$Revision: 4.46 $ =~ /\d+/g) }; +$VERSION = do { sprintf " %d.%03d", (q$Revision: 4.47 $ =~ /\d+/g) }; =pod diff --git a/Lite/Changes b/Lite/Changes index 27e5e0c..f4cd6b6 100644 --- a/Lite/Changes +++ b/Lite/Changes @@ -1,5 +1,8 @@ Revision history for Perl extension NetAddr::IP::Lite +1.30 Thu Oct 6 23:41:42 PDT 2011 + correct internal variable reference in Util.pm 1.39 + 1.29 Thu Oct 6 20:20:33 PDT 2011 updated to UTIL 1.38 diff --git a/Lite/Lite.pm b/Lite/Lite.pm index 95abce1..bb8ad4f 100644 --- a/Lite/Lite.pm +++ b/Lite/Lite.pm @@ -29,7 +29,7 @@ use vars qw(@ISA @EXPORT_OK $VERSION $Accept_Binary_IP $Old_nth $AUTOLOAD *Zero); -$VERSION = do { my @r = (q$Revision: 1.29 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +$VERSION = do { my @r = (q$Revision: 1.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; require Exporter; diff --git a/Lite/Util/Changes b/Lite/Util/Changes index a700503..c39a9ab 100644 --- a/Lite/Util/Changes +++ b/Lite/Util/Changes @@ -1,5 +1,8 @@ Revision history for Perl extension NetAddr::IP::Util +1.39 Thu Oct 6 23:41:42 PDT 2011 + really correct missing internal reference + 1.38 Thu Oct 6 20:20:33 PDT 2011 corrected missing internal reference to inet_4map6 diff --git a/Lite/Util/Util.pm b/Lite/Util/Util.pm index 301c8c4..4c0a867 100644 --- a/Lite/Util/Util.pm +++ b/Lite/Util/Util.pm @@ -13,7 +13,7 @@ @ISA = qw(Exporter DynaLoader); -$VERSION = do { my @r = (q$Revision: 1.38 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +$VERSION = do { my @r = (q$Revision: 1.39 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; @EXPORT_OK = qw( inet_aton @@ -137,7 +137,7 @@ } sub ipv6_n2d { - die "Bad arg length for 'ipv6_n2x', length is ". length($_[0]) ." should be 16" + die "Bad arg length for 'ipv6_n2d', length is ". length($_[0]) ." should be 16" unless length($_[0]) == 16; my @hex = (unpack("n8",$_[0])); $hex[9] = $hex[7] & 0xff; @@ -164,88 +164,9 @@ return &yinet_aton; } -sub DESTROY {}; - my $_newV4compat = pack('L4',0,0,0xffffffff,0); -my $mygethostbyname; -my $_Sock6ok = 1; # for testing gethostbyname - -sub _forceNoSock6() { - $_Sock6ok = 0; -} - -package NetAddr::IP::UtilPolluted; - -# Socket pollutes the name space with all of its symbols. Since -# we don't want them all, confine them to this name space. - -use strict; -use Socket; -use NetAddr::IP::Util qw(ipv6_n2x ipv4to6 inet_4map6); - -sub DESTROY {}; - -# invoke replacement subroutine for Perl's "gethostbyname" -# if Socket6 is available. -# -my $_v4zero = pack('L',0); -my $_zero = pack('L4',0,0,0,0); - -sub _end_gethostbyname { -# my ($name,$aliases,$addrtype,$length,@addrs) = @_; - my @rv = @_; -# first ip address = rv[4] - my $tip = $rv[4]; - unless ($tip && $tip ne $_v4zero && $tip ne $_zero) { - @rv = (); - } -# length = rv[3] - elsif ($rv[3] && $rv[3] == 4) { - foreach (4..$#rv) { - $rv[$_] = ipv4to6(inet_4map6($rv[$_])); - } - $rv[3] = 16; # unconditionally set length to 16 - } - elsif ($rv[3] == 16) { - ; # is ok - } else { - @rv = (); - } - return wantarray ? @rv : $rv[4]; -} - -unless ($_Sock6ok && eval { require Socket6 }) { - $mygethostbyname = sub { - my @tip = gethostbyname($_[0]); - return &_end_gethostbyname(@tip); - }; -} else { - import Socket6 qw( gethostbyname2 ); - import Socket6 qw( AF_INET6 ) - unless eval { &AF_INET6 }; - - $mygethostbyname = sub { - my @tip; - unless (@tip = gethostbyname2($_[0],&AF_INET6)) { - @tip = gethostbyname($_[0]); - } - return &_end_gethostbyname(@tip); - }; -} - -#package NetAddr::IP::Util; - -package NetAddr::IP::Util; - -sub naip_gethostbyname { -# turn off complaint from Socket6 about missing numeric argument - undef local $^W; - return &$mygethostbyname($_[0]); -} - sub isNewIPv4 { -print "NOT DEFINE\n" unless defined $_[0]; my $naddr = $_[0] ^ $_newV4compat; return isIPv4($naddr); } @@ -272,6 +193,90 @@ return $naddr; } +sub DESTROY {}; + +my $mygethostbyname; + +my $_Sock6ok = 1; # for testing gethostbyname + +sub import { + if (grep { $_ eq ':noSock6' } @_) { +print "EXCLUDE Sock6\n"; + $_Sock6ok = 0; + @_ = grep { $_ ne ':noSock6' } @_; + } + NetAddr::IP::Util->export_to_level(1,@_); +} + +package NetAddr::IP::UtilPolluted; + +# Socket pollutes the name space with all of its symbols. Since +# we don't want them all, confine them to this name space. + +use strict; +use Socket; + +sub DESTROY {}; + +# invoke replacement subroutine for Perl's "gethostbyname" +# if Socket6 is available. +# +my $_v4zero = pack('L',0); +my $_zero = pack('L4',0,0,0,0); + +sub _end_gethostbyname { +# my ($name,$aliases,$addrtype,$length,@addrs) = @_; + my @rv = @_; +# first ip address = rv[4] + my $tip = $rv[4]; + unless ($tip && $tip ne $_v4zero && $tip ne $_zero) { + @rv = (); + } +# length = rv[3] + elsif ($rv[3] && $rv[3] == 4) { + foreach (4..$#rv) { + $rv[$_] = NetAddr::IP::Util::inet_4map6(NetAddr::IP::Util::ipv4to6($rv[$_])); + } + $rv[3] = 16; # unconditionally set length to 16 + } + elsif ($rv[3] == 16) { + ; # is ok + } else { + @rv = (); + } + return @rv; +} + +unless (eval { require Socket6 }) { + $mygethostbyname = sub { + my @tip = gethostbyname($_[0]); + return &_end_gethostbyname(@tip); + }; +} else { + import Socket6 qw( gethostbyname2 ); + import Socket6 qw( AF_INET6 ) + unless eval { &AF_INET6 }; + + $mygethostbyname = sub { + my @tip; + unless ($_Sock6ok && (@tip = gethostbyname2($_[0],&AF_INET6))) { + @tip = gethostbyname($_[0]); + } + return &_end_gethostbyname(@tip); + }; +} + +package NetAddr::IP::Util; + +sub naip_gethostbyname { +# turn off complaint from Socket6 about missing numeric argument + undef local $^W; + my @rv = &$mygethostbyname($_[0]); + return wantarray + ? @rv + : $rv[4]; +} + 1; __END__ diff --git a/META.yml b/META.yml index 249f4b8..8a0d5a3 100644 --- a/META.yml +++ b/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: NetAddr-IP -version: 4.046 +version: 4.047 abstract: Manages IPv4 and IPv6 addresses and subnets license: ~ author: