#!/usr/bin/perl # $Id: IP.pm,v 1.15 2003/06/06 18:45:02 unimlo Exp $ package Net::ACL::Match::IP; use strict; use vars qw( $VERSION @ISA ); ## Inheritance and Versioning ## @ISA = qw( Net::ACL::Match ); $VERSION = '0.07'; ## Module Imports ## use Carp; use Net::ACL::Match; use Net::ACL::Rule qw( :rc ); use Net::Netmask; ## Public Class Methods ## sub new { my $proto = shift; my $class = ref $proto || $proto; @_ = @{$_[0]} if (scalar @_ == 1) && (ref $_[0] eq 'ARRAY'); my $this = bless( { _index => undef, _net => undef }, $class); $this->{_index} = shift; croak "Index not a number ($this->{_index})" unless $this->{_index} =~ /^[0-9]+$/; croak "Missing network data" unless scalar @_ > 0; $this->{_net} = new Net::Netmask(@_); croak $this->{_net}->{'ERROR'} if defined $this->{_net}->{'ERROR'}; return $this; } ## Public Object Methods ## sub match { my $this = shift; return $this->{_net}->match($_[$this->{_index}]) ? ACL_MATCH : ACL_NOMATCH; } sub net { my $this = shift; $this->{_net} = @_ ? ((ref $_[0] eq 'Net::Netmask') ? $_[0] : new Net::Netmask(@_)) : $this->{_net}; return $this->{_net}; } ## POD ## =pod =head1 NAME Net::ACL::Match::IP - Class matching IP addresses against an IP or network =head1 SYNOPSIS use Net::ACL::Match::IP; # Constructor $match = new Net::ACL::Match::IP(1,'10.0.0.0/8'); # Accessor Methods $netmaskobj = $match->net($netmaskobj); $netmaskobj = $match->net($net); $index = $match->index($index); $rc = $match->match($ip); =head1 DESCRIPTION This module is just a wrapper of the Net::Netmask module to allow it to operate automatically with L. =head1 CONSTRUCTOR =over 4 =item new() - create a new Net::ACL::Match::IP object $match = new Net::ACL::Match::IP(1,'10.0.0.0/8'); This is the constructor for Net::ACL::Match::IP objects. It returns a reference to the newly created object. The first argument is the argument number of the match method that should be matched. The remaining arguments is parsed directly to the constructor of Net::Netmask. =back =head1 ACCESSOR METHODS =over 4 =item net() The net method returns the Net::Netmask object representing the network matched. If called with a Net::Netmask object, the net used for matching is changed to that object. If called with a anything else, the Net::Netmask constructor will be used to convert it to a Net::Netmask object. =item index() The index method returns the index of the argument that will be matched. If called with an argument, the index is changed to that argument. =item match() The match method invoke the match() method of the Net::Netmask object constructed by new(). The index value defines which argument is passed on to new(). =back =head1 SEE ALSO Net::Netmask, Net::ACL, Net::ACL::Rule, Net::ACL::Match =head1 AUTHOR Martin Lorensen =cut ## End Package Net::ACL::Match::IP ## 1;