File Coverage

blib/lib/Input/Validator/Constraint/Ip.pm
Criterion Covered Total %
statement 22 22 100.0
branch 12 14 85.7
condition 7 15 46.6
subroutine 4 4 100.0
pod 1 1 100.0
total 46 56 82.1


line stmt bran cond sub pod time code
1             package Input::Validator::Constraint::Ip;
2              
3 1     1   19688 use strict;
  1         2  
  1         30  
4 1     1   5 use warnings;
  1         1  
  1         25  
5              
6 1     1   4 use base 'Input::Validator::Constraint';
  1         2  
  1         477  
7              
8             sub is_valid {
9 12     12 1 741 my ($self, $value) = @_;
10              
11 12         12 my %args = @{$self->args};
  12         45  
12              
13 12         36 my @octets = split /\./ => $value;
14 12 100       31 return unless @octets == 4;
15              
16 11         20 for (@octets) {
17 42 100 33     305 return unless m/^\d+$/ && $_ >= 0 && $_ <= 255;
      66        
18             }
19              
20 10 100       21 if ($args{noprivate}) {
21 4 100       11 return 0 if $octets[0] == 10;
22 3 100       8 return 0 if $octets[0] == 127;
23 2 50 33     13 return 0 if $octets[0] == 172 && ($octets[1] >= 16 && $octets[1] <= 31);
      66        
24 1 50 33     10 return 0 if $octets[0] == 192 && $octets[1] == 168;
25             }
26              
27 6         581 return 1;
28             }
29              
30             1;
31             __END__