From 3b9a7e5f8eb59190b0b877d82264e7b1b6c4f820 Mon Sep 17 00:00:00 2001 From: teastep Date: Sun, 20 Apr 2008 14:34:46 +0000 Subject: [PATCH] More editing of RATE and CEIL git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@8463 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb --- Shorewall-perl/Shorewall/Tc.pm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Shorewall-perl/Shorewall/Tc.pm b/Shorewall-perl/Shorewall/Tc.pm index 865c3a4ec..eb2d8d84e 100644 --- a/Shorewall-perl/Shorewall/Tc.pm +++ b/Shorewall-perl/Shorewall/Tc.pm @@ -396,20 +396,22 @@ sub validate_tc_device( $$$$$ ) { progress_message " Tcdevice \"$currentline\" $done."; } -sub convert_rate( $$ ) { - my ($full, $rate) = @_; +sub convert_rate( $$$ ) { + my ($full, $rate, $column) = @_; if ( $rate =~ /\bfull\b/ ) { $rate =~ s/\bfull\b/$full/g; - progress_message " Compiling $_[1]"; - fatal_error "Invalid Rate ($_[1])" if $rate =~ m{[^0-9*/+()-]}; + progress_message " Compiling $column $_[1]"; + fatal_error "Invalid $column ($_[1])" if $rate =~ m{[^0-9*/+()-]}; + no warnings; $rate = eval "int( $rate )"; - fatal_error "Invalid Rate ($_[1])" unless defined $rate; + use warnings; + fatal_error "Invalid $column ($_[1])" unless defined $rate; } else { $rate = rate_to_kbit $rate } - fatal_error "Invalid Rate ($_[1])" if $rate > $full; + fatal_error "$column ($_[1]) exceeds OUT-BANDWIDTH" if $rate > $full; "${rate}kbit"; } @@ -492,13 +494,15 @@ sub validate_tc_class( $$$$$$ ) { } $tcref->{$classnumber} = { tos => [] , - rate => convert_rate( $full, $rate ) , - ceiling => convert_rate( $full, $ceil ) , + rate => convert_rate( $full, $rate, 'RATE' ) , + ceiling => convert_rate( $full, $ceil, 'CEIL' ) , priority => $prio eq '-' ? 1 : $prio }; $tcref = $tcref->{$classnumber}; + fatal_error "RATE ($tcref->{rate}) exceeds CEIL ($tcref->{ceiling})" if $tcref->{rate} > $tcref->{ceiling}; + unless ( $options eq '-' ) { for my $option ( split_list "\L$options", 'option' ) { my $optval = $tosoptions{$option};