File Coverage

blib/lib/Net/ACL/File/Community.pm
Criterion Covered Total %
statement 38 38 100.0
branch 7 8 87.5
condition n/a
subroutine 10 10 100.0
pod 1 1 100.0
total 56 57 98.2


line stmt bran cond sub pod time code
1             #!/usr/bin/perl
2              
3             # $Id: Community.pm,v 1.11 2003/06/06 18:45:02 unimlo Exp $
4              
5             package Net::ACL::File::CommunityRule;
6              
7 1     1   1516 use strict;
  1         3  
  1         38  
8 1     1   5 use vars qw( $VERSION @ISA );
  1         2  
  1         76  
9              
10             ## Inheritance ##
11              
12             @ISA = qw( Net::ACL::Rule );
13             $VERSION = '0.07';
14              
15             ## Module Imports ##
16              
17 1     1   5 use Net::ACL::Rule;
  1         1  
  1         37  
18 1     1   6 use Carp;
  1         2  
  1         170  
19              
20             ## Public Object Methods ##
21              
22             sub asconfig
23             { # Don't check data - expect them to be constructed the right way!
24 6     6   19 my $this = shift;
25 6         8 my $name = shift;
26 6         14 my $match = $this->{_match}->[0];
27 6 100       14 my $str = defined $match ? join(' ',@{$match->value}) : '';
  4         19  
28 6 100       24 return 'ip community-list ' . $name . ' ' . $this->action_str . ($str eq '' ? '' : ' ' . $str) . "\n";
29             }
30              
31             ## End of Net::ACL::File::CommunityRule ##
32              
33             package Net::ACL::File::Community;
34              
35 1     1   6 use strict;
  1         2  
  1         40  
36 1     1   4 use vars qw( $VERSION @ISA );
  1         2  
  1         60  
37              
38             ## Inheritance ##
39              
40             @ISA = qw( Net::ACL::File::Standard );
41             $VERSION = '0.07';
42              
43             ## Module Imports ##
44              
45 1     1   5 use Net::ACL::File::Standard;
  1         2  
  1         39  
46 1     1   5 use Carp;
  1         2  
  1         386  
47              
48             ## Net::ACL::File Class Auto Registration Code ##
49              
50             Net::ACL::File->add_listtype('community-list',__PACKAGE__,'ip community-list');
51              
52             ## Public Object Methods ##
53              
54             sub loadmatch
55             {
56 6     6 1 9 my ($this,$line) = @_;
57 6 50       13 croak "Configuration line format error in line: '$line'"
58             unless $line =~ /^ip community-list ([^ ]+) (permit|deny)(.*)$/i;
59 6         112 my ($name,$action,$data) = ($1,$2,$3);
60 6         16 $data =~ s/^ //;
61 6         42 my $rule = new Net::ACL::File::CommunityRule(
62             Action => $action
63             );
64 6 100       38 $rule->add_match($rule->autoconstruction('Match','Net::ACL::Match::Member','Member',0,[split(/ /,$data)]))
65             unless $data eq '';
66 6         22 $this->add_rule($rule);
67 6         21 $this->name($name);
68             }
69              
70             ## POD ##
71              
72             =pod
73              
74             =head1 NAME
75              
76             Net::ACL::File::Community - Community-lists loaded from configuration string.
77              
78             =head1 DESCRIPTION
79              
80             This module extends the Net::ACL::File::Standard class to handle
81             community-lists. See L for
82             details.
83              
84             =head1 SEE ALSO
85              
86             Net::ACL, Net::ACL::File, Net::ACL::Standard
87              
88             =head1 AUTHOR
89              
90             Martin Lorensen
91              
92             =cut
93              
94             ## End of Net::ACL::File::Community ##
95              
96             1;