Net-IPAddress-Util
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Net/IPAddress/Util.pm view on Meta::CPAN
push @$normal, hex(join('', splice(@hex, 0, 2)));
}
}
elsif (length($address) == 16) {
$normal = [ unpack('C16', $address) ];
}
else {
return ERROR("Invalid argument `$address', a(n) " . (ref($address) || 'bare scalar') . ' provided');
}
# warn(join(',', @$normal) . "\n");
return bless { address => pack('C16', @$normal), %opt } => $class;
}
sub is_ipv4 {
my $self = shift;
my @octets = unpack 'C16', $self->{ address };
__debug(join(' ', map { sprintf('%3s', $_) } @octets));
# my $is_siit = $self->{ SIIT } || 0;
return 0 if grep { $_ } @octets[ 0 .. 7 ];
return 1;
}
lib/Net/IPAddress/Util/Collection.pm view on Meta::CPAN
require Net::IPAddress::Util::Collection::Tie;
require Net::IPAddress::Util::Range;
our $VERSION = '5.001';
sub new {
my $class = ref($_[0]) ? ref(shift()) : shift;
my @contents = @_;
my @o;
tie @o, 'Net::IPAddress::Util::Collection::Tie', \@contents;
return bless \@o => $class;
}
sub sorted {
my $self = shift;
# In theory, a raw radix sort is O(N), which beats Perl's O(N log N) by
# a fair margin. However, it _does_ discard duplicates, so ymmv.
# FIXME Should we sort by hi, lo instead of lo, hi?
my $from = [ map { [ unpack('C32', $_->{ lower }->{ address } . $_->{ upper }->{ address }) ] } @$self ];
my $to;
for (my $i = 31; $i >= 0; $i--) {
lib/Net/IPAddress/Util/Collection/Tie.pm view on Meta::CPAN
use 5.012;
use Carp qw( confess );
require Net::IPAddress::Util;
sub new {
my $class = shift;
$class = ref($class) || $class;
my ($arg_ref) = @_;
return bless $arg_ref => $class;
}
sub TIEARRAY {
my ($class, $contents) = @_;
$contents = [] unless defined $contents;
@{$contents} = map { _checktype($_) } @{$contents};
my $self = $class->new({ contents => $contents });
}
sub FETCH {
lib/Net/IPAddress/Util/Range.pm view on Meta::CPAN
my $class = shift;
$class = ref($class) || $class;
my ($arg_ref) = @_;
my ($l, $u);
if ($arg_ref->{ lower } && $arg_ref->{ upper }) {
$arg_ref->{ lower } = IP($arg_ref->{ lower });
$arg_ref->{ upper } = IP($arg_ref->{ upper });
if ($arg_ref->{ lower } > $arg_ref->{ upper }) {
($arg_ref->{ lower }, $arg_ref->{ upper }) = ($arg_ref->{ upper }, $arg_ref->{ lower });
}
return bless $arg_ref => $class;
}
elsif ($arg_ref->{ ip }) {
my $ip;
my $nm = 2;
if ($arg_ref->{ netmask }) {
$ip = IP($arg_ref->{ ip });
my $was_ipv4 = $ip->is_ipv4;
$nm = IP($arg_ref->{ netmask });
$ip &= $nm;
$nm = ~$nm;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.793 second using v1.00-cache-2.02-grep-82fe00e-cpan-503542c4f10 )