From 3f37af7d2a0a90efbef1f576e9b47a1b630e6323 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen.hemminger@vyatta.com>
Date: Mon, 14 Jun 2010 16:39:01 -0700
Subject: 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
---
 lib/Vyatta/Qos/Util.pm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'lib')

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;
 }
 
-- 
cgit v1.2.3