diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-06-14 16:39:01 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-06-14 16:39:01 -0700 |
commit | 3f37af7d2a0a90efbef1f576e9b47a1b630e6323 (patch) | |
tree | 20ef86c98810545a7d5f09592226f1f510807d1d | |
parent | 6306f6edae447d824cf1d3beacb7b64f0f00d116 (diff) | |
download | vyatta-cfg-qos-3f37af7d2a0a90efbef1f576e9b47a1b630e6323.tar.gz vyatta-cfg-qos-3f37af7d2a0a90efbef1f576e9b47a1b630e6323.zip |
Reject ip as a IP protocol value
The name ip exists in /etc/protocols as a pseudonym for all IP protocols.
But the Qos match logic doesn't support it so do not allow the user to
choose that value
Bug 5689
-rw-r--r-- | lib/Vyatta/Qos/Util.pm | 8 | ||||
-rw-r--r-- | templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/lib/Vyatta/Qos/Util.pm b/lib/Vyatta/Qos/Util.pm index 9686120..8649a72 100644 --- a/lib/Vyatta/Qos/Util.pm +++ b/lib/Vyatta/Qos/Util.pm @@ -206,14 +206,18 @@ sub getProtocol { defined $str or return; if ( $str =~ /^([0-9]+)|(0x[0-9a-fA-F]+)$/ ) { - if ( $str < 0 || $str > 255 ) { + if ( $str <= 0 || $str > 255 ) { die "$str is not a valid protocol number\n"; } return $str; } my ( $name, $aliases, $proto ) = getprotobyname($str); - ( defined $proto ) or die "\"$str\" unknown protocol\n"; + die "\"$str\" unknown protocol\n" + unless $proto; + die "$name is not usable as an IP protocol match\n" + if ($proto == 0); + return $proto; } diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def index 9c665c2..2405ca6 100644 --- a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def @@ -3,7 +3,7 @@ help: Match IP protocol name or number syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --protocol $VAR(@)" allowed: awk ' /^#/ { next } - { printf "%s ", $1 }' </etc/protocols + { if($1 != "ip") printf "%s ", $1 }' </etc/protocols comp_help: <0-255> IP protocol value or name Common names: icmp Internet Control Message Protocol |