diff --git a/Shorewall/Perl/Shorewall/Tc.pm b/Shorewall/Perl/Shorewall/Tc.pm
index 1ca43949f..8f530956c 100644
--- a/Shorewall/Perl/Shorewall/Tc.pm
+++ b/Shorewall/Perl/Shorewall/Tc.pm
@@ -762,6 +762,7 @@ sub validate_tc_class( ) {
fatal_error "Invalid INTERFACE:CLASS ($devclass)" if defined $rest;
if ( $device =~ /^(\d+|0x[\da-fA-F]+)$/ ) {
+ $device =~ s/^0x//;
( $number , $classnumber ) = ( hex_value $device, hex_value $number );
( $device , $devref) = dev_by_number( $number );
} else {
@@ -778,6 +779,7 @@ sub validate_tc_class( ) {
}
fatal_error "Invalid interface/class number ($devclass)" unless defined $classnumber && $classnumber;
+ fatal_error "Reserved class number (1)" if $classnumber == 1;
fatal_error "Duplicate interface:class number ($number:$classnumber}" if $tcclasses{$device}{$classnumber};
} else {
fatal_error "Missing interface NUMBER";
diff --git a/manpages/shorewall-tcclasses.xml b/manpages/shorewall-tcclasses.xml
index ebc23e173..a6c1bc24c 100644
--- a/manpages/shorewall-tcclasses.xml
+++ b/manpages/shorewall-tcclasses.xml
@@ -134,7 +134,8 @@
classify option is not given, you may still specify a
class or you may have Shorewall generate a
class number from the MARK value. Interface numbers and class
- numbers are always assumed to be specified in hex.
+ numbers are always assumed to be specified in hex and class number 1
+ is reserved as the root class of the queuing discipline.
You may NOT specify wildcards here, e.g. if you have multiple
ppp interfaces, you need to put them all in here!
@@ -500,12 +501,13 @@
url="http://shorewall.net/traffic_shaping.htm">http://shorewall.net/traffic_shaping.htm
shorewall(8), shorewall-accounting(5), shorewall-actions(5),
- shorewall-blacklist(5), shorewall-hosts(5), shorewall_interfaces(5), shorewall-ipsets(5),
- shorewall-maclist(5), shorewall-masq(5), shorewall-nat(5),
- shorewall-netmap(5), shorewall-params(5), shorewall-policy(5),
- shorewall-providers(5), shorewall-proxyarp(5), shorewall-route_rules(5),
- shorewall-routestopped(5), shorewall-rules(5), shorewall.conf(5), shorewall-secmarks(5),
- shorewall-tcdevices(5), shorewall-tcrules(5), shorewall-tos(5),
- shorewall-tunnels(5), shorewall-zones(5)
+ shorewall-blacklist(5), shorewall-hosts(5), shorewall_interfaces(5),
+ shorewall-ipsets(5), shorewall-maclist(5), shorewall-masq(5),
+ shorewall-nat(5), shorewall-netmap(5), shorewall-params(5),
+ shorewall-policy(5), shorewall-providers(5), shorewall-proxyarp(5),
+ shorewall-route_rules(5), shorewall-routestopped(5), shorewall-rules(5),
+ shorewall.conf(5), shorewall-secmarks(5), shorewall-tcdevices(5),
+ shorewall-tcrules(5), shorewall-tos(5), shorewall-tunnels(5),
+ shorewall-zones(5)
diff --git a/manpages6/shorewall6-tcclasses.xml b/manpages6/shorewall6-tcclasses.xml
index bc6105961..c7ead115c 100644
--- a/manpages6/shorewall6-tcclasses.xml
+++ b/manpages6/shorewall6-tcclasses.xml
@@ -117,7 +117,7 @@
INTERFACE -
- interface[:class]
+ interface[[:parent]:class]
Name of interface. Each interface may be
@@ -141,7 +141,8 @@
file.
Normally, all classes defined here are sub-classes of a root
- class that is implicitly defined from the entry in shorewall6-tcdevices(5). You
can establish a class hierarchy by specifying a
parent class -- the number of a class that you
@@ -454,8 +455,8 @@
shorewall6-blacklist(5), shorewall6-hosts(5), shorewall6-interfaces(5),
shorewall6-maclist(5), shorewall6-params(5), shorewall6-policy(5),
shorewall6-providers(5), shorewall6-route_rules(5),
- shorewall6-routestopped(5), shorewall6-rules(5), shorewall6.conf(5), shorewall6-secmarks(5),
- shorewall6-tcdevices(5), shorewall6-tcrules(5), shorewall6-tos(5),
- shorewall6-tunnels(5), shorewall6-zones(5)
+ shorewall6-routestopped(5), shorewall6-rules(5), shorewall6.conf(5),
+ shorewall6-secmarks(5), shorewall6-tcdevices(5), shorewall6-tcrules(5),
+ shorewall6-tos(5), shorewall6-tunnels(5), shorewall6-zones(5)