NAME
Data::Checker::IP - check data to see if it is a valid IP
SYNOPSIS
use Data::Checker;
$obj = new Data::Checker;
$obj->check($data,"IP",$check_opts);
DESCRIPTION
This module is meant to be used by the Data::Checker module.
One set of checks that is often done is to see if a piece of data is a valid IP. A valid IP might be a string that simply meets the criteria of an IP, an IP that is on a specific network, an IP that defines a network, etc.
This module performs several IP releated checks.
FUNCTIONS
- check
-
This is the only function provided by this module, and it is intended to be used by the Data::Checker module.
CHECKS OPTIONS
This checks elements to see if they are valid IPv4 or IPv6 addresses using the NetAddr::IP module.
The $check_opts
hashref defines exactly what IP checks to perform, and some options used by those checks. Known keys that specify the checks are:
- ipv4, ipv6
-
If either of these options are given, the IP must be an IPv4 or IPv6 address respectively.
- network_ip, broadcast_ip
-
If either of these options are given, the IP must be a network IP or a broadcast IP. The IP should be specified in CIDR notation so that the mask can be determined. Alternately, if the network option is given, the IP must be the network or broadcast IP for that network.
- in_network
-
The IP must belong to the network specified by the network option. The value must be any network definition accepted by NetAddr::IP.
The following options are supported.
- network
-
This specifies the network that an IP should belong to (or NOT belong to if the negate option is used) with the in_network check.
EXAMPLES
use Data::Checker;
$obj = new Data::Checker;
$data = ...
$opts = ...
($pass,$fail,$info,$warn) = $obj->check($data,"IP",$opts);
The value of $data
and $opts
is listed below in the examples.
- To check that the values are valid IPs
-
$data = [ '1.2.3.4', '1:2:3:4:5:6:7:8', 'some-string' ]; $opts = { }
This yields:
$pass = [ '1.2.3.4', '1:2:3:4:5:6:7:8' ]; $fail = { 'some-string' => 'Not a valid IP' }
- To check if an IP is a valid IPv4
-
$data = [ '1.2.3.4', '1:2:3:4:5:6:7:8' ]; $opts = { 'ipv4' => undef }
- To check that all of the IPs are contained in a specific network
-
$data = [ '1.2.3.4', '10.20.30.40' ]; $opts = { 'in_network' { 'network' => '1.2.3.0/24' } };
KNOWN BUGS AND LIMITATIONS
None known.
SEE ALSO
LICENSE
This script is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Sullivan Beck (sbeck@cpan.org)