Net-IPAddress-Util

 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 distribution
 view release on metacpan -  search on metacpan

( run in 0.793 second using v1.00-cache-2.02-grep-82fe00e-cpan-503542c4f10 )