Add edits for IP addresses and ranges

git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@6287 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
teastep
2007-05-08 18:25:16 +00:00
parent 6160e9c627
commit 77ce1b5a43
2 changed files with 39 additions and 5 deletions

View File

@ -31,6 +31,8 @@ use strict;
our @ISA = qw(Exporter);
our @EXPORT = qw(
validate_net
validate_range
ip_range_explicit
);
our @EXPORT_OK = qw( );
@ -48,6 +50,16 @@ sub valid_address( $ ) {
1;
}
sub validate_net( $ ) {
my ($net, $vlsm) = split '/', $_[0];
if ( defined $vlsm ) {
fatal_error "Invalid VLSM ($vlsm)" unless $vlsm =~ /^\d+$/ && $vlsm <= 32;
}
fatal_error "Invalid IP address ($net)" unless valid_address $net;
}
sub decodeaddr( $ ) {
my $address = $_[0];
@ -74,6 +86,18 @@ sub encodeaddr( $ ) {
$result;
}
sub validate_range( $$ ) {
my ( $low, $high ) = @_;
fatal_error "Invalid IP address ( $low )" unless valid_address $low;
fatal_error "Invalid IP address ( $high )" unless valid_address $high;
my $first = decodeaddr $low;
my $last = decodeaddr $high;
fatal_error "Invalid IP Range ( $low-$high )" unless $first <= $last;
}
sub ip_range_explicit( $ ) {
my $range = $_[0];
my @result;