| Net-Connection-Sniffer documentation | Contained in the Net-Connection-Sniffer distribution. |
Net::Connection::Sniffer::Util -- netaddr utilities
use Net::Connection::Sniffer::Util;
my $ip = newcidr24 Net::Connection::Sniffer::Util($netaddr);
my $ipcopy = $ip->copy;
if ($someip->within($ip)) {
do something...
if ($ip->contains($someip)) {
do something...
if ($ip1->equal($ip2)) {
do something
Net::Connection::Sniffer::Util is a lite weight perl module to do NetAddr::IP like operations on ip addresses in either 32 or 128 bit formats.
Create a blessed address object with cidr/24 network/broadcast bounds (assumes 32 bit addressing), for ipv6, this will be cidr/120
Copy a blessed network address object to a new blessed object;
Returns 'undef' if $ip is not a Net::Connection::Sniffer::Util object.
Check to see if $someip is within the cidr of $ip. i.e.
network address <= $someip <= broadcast address input: ip object for range check returns: true if within, else false
Returns 'undef' if $someip and $ip are not Net::Connection::Sniffer::Util objects.
Check to see if $ip is within the cidr range of $someip. i.e.
This is the logical compliment of the within method.
Check if IP1 equal IP2
input: ip2 object returns: true/false
Copyright 2006, Michael Robinton <michael@bizsystems.com>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (except as noted otherwise in individuals sub modules) published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Michael Robinton <michael@bizsystems.com>
man (3) NetAddr::IP::Util
| Net-Connection-Sniffer documentation | Contained in the Net-Connection-Sniffer distribution. |
#!/usr/bin/perl package Net::Connection::Sniffer::Util; use strict; use NetAddr::IP::Util qw( sub128 hasbits ipanyto6 ipv6_aton ); use vars qw($VERSION); $VERSION = do { my @r = (q$Revision: 0.02 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
my $oxFF = ipv6_aton('::FF'); my $oxFF00 = ~ $oxFF; sub newcidr24 { my($proto,$naddr) = @_; my $class = ref($proto) || $proto; my $self = {}; $self->{IP} = $naddr = ipanyto6($naddr); $self->{BC} = $naddr | $oxFF; $self->{NT} = $naddr & $oxFF00; bless ($self, $class); return $self; }
sub copy { my $proto = shift; return undef unless (my $class = ref($proto)) eq __PACKAGE__; my $self = {}; @{$self}{qw(IP BC NT)} = @{$proto}{qw(IP BC NT)}; bless ($self,$class); return $self; }
sub within { my($sref,$ip) = @_; return undef unless ref($sref) eq __PACKAGE__ && ref($ip) eq __PACKAGE__; return (sub128($sref->{IP},$ip->{NT}) && sub128($ip->{BC},$sref->{IP})) ? 1 : 0; }
sub contains { my($sref,$ip) = @_; return within($ip,$sref); }
sub equal { my($ip1,$ip2) = @_; return 0 unless $ip1 && $ip2 && ref $ip1 && ref $ip2; return hasbits((sub128($ip1->{IP},$ip2->{IP}))[1]) ? 0 : 1; }
1;