NAME

Net::Silk::CIDR - SiLK IP CIDR class

SYNOPSIS

  use Net::Silk::CIDR;

  my $r = Net::Silk::CIDR->new('1.1.1.0' => 27); # or "1.1.1.0/27"

  $r->contains("1.1.1.2"); # true

  print "$r\n";                            # 1.1.1.0/27
  print join('/', $r->ip, $r->prefix), "\n"; # 1.1.1.0/27
  print join('/', @$r, "\n";               # 1.1.1.0/27

  my $size = $r->cardinality; # 32

  use Net::Silk::IPSet;
  my $s = Net::Silk::IPSet->load("my.set");
  my $iter = $s->iter_cidr;
  while (my $r = $iter->()) {
    ... # $r is a Net::Silk::CIDR
  }

  use Net::Silk::Pmap;
  my $s = Net::Silk::Pmap->load("my.pmap");
  my $iter = $s->iter_cidr;
  while (my($k, $v) = each %$s) {
    ... # $k is a Net::Silk::CIDR
  }

DESCRIPTION

Net::Silk::CIDR is a lightweight wrapper around a CIDR block specified by an IP and prefix bits. It is returned by iterators in Net::Silk::IPSet, Net::Silk::Pmap, and Net::Silk::IPWildcard.

METHODS

new($addr, $prefix)
new([$addr, $prefix])
new($string)

Returns a new Net::Silk::CIDR object represented by the given IP base and prefix bits. The two values can be provided either as separate arguments, in an array ref, or a string representation.

ip()

Return the base of this CIDR as a Net::Silk::IPAddr. This can alternately be accessed via $r->[0].

prefix()

Return the prefix bits of this CIDR. This can alternately be accessed via $r->[1].

first()

Return the first address in the CIDR range, same as ip().

last()

Return the last address in the CIDR range.

carinality()

Return the number of elements in this block.

contains($item)

Return whether or not the given item is contained in this block.

as_range()

Returns a Net::Silk::Range representing this block.

as_str()

Return a string in the form of "ip/prefix". This method gets invoked automatically when the block is used in string context.

iter()

Return a sub ref that iterates over all elements of this block. Treating the object like a filehandle <$r> yields the same results.

OVERLOADED OPERATORS

The following operators are overloaded:

  <>     ""
  eq     ==
  ne     !=
  cmp    <=>

SEE ALSO

Net::Silk, Net::Silk::RWRec, Net::Silk::IPSet, Net::Silk::Bag, Net::Silk::Pmap, Net::Silk::IPWildcard, Net::Silk::Range, Net::Silk::IPAddr, Net::Silk::TCPFlags, Net::Silk::ProtoPort, Net::Silk::File, Net::Silk::Site, silk(7)

COPYRIGHT & LICENSE

Copyright (C) 2016 by Carnegie Mellon University

Use of the Net-Silk library and related source code is subject to the terms of the following licenses:

GNU General Public License (GPL) Rights pursuant to Version 2, June 1991 Government Purpose License Rights (GPLR) pursuant to DFARS 252.227.7013

NO WARRANTY

See GPL.txt and LICENSE.txt for more details.