From 4f12cc5f730a7759bc668b56165fe79b058dcfcd Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 7 Jun 2010 10:31:08 -0700 Subject: Revert "Move traffic-limiter to input-policy" This reverts commit b75a66a4d5768f22a4b995d49ba442de8762a800. --- .../input-policy/limit/class/node.def | 6 -- .../limit/class/node.tag/bandwidth/node.def | 8 -- .../limit/class/node.tag/burst/node.def | 7 -- .../limit/class/node.tag/description/node.def | 2 - .../limit/class/node.tag/match/node.def | 4 - .../node.tag/match/node.tag/description/node.def | 2 - .../match/node.tag/ether/destination/node.def | 2 - .../match/node.tag/ether/protocol/node.def | 3 - .../node.tag/match/node.tag/ether/source/node.def | 2 - .../match/node.tag/ip/destination/address/node.def | 2 - .../match/node.tag/ip/destination/node.def | 1 - .../match/node.tag/ip/destination/port/node.def | 3 - .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 ----- .../node.tag/match/node.tag/ip/protocol/node.def | 17 ---- .../match/node.tag/ip/source/address/node.def | 2 - .../node.tag/match/node.tag/ip/source/node.def | 1 - .../match/node.tag/ip/source/port/node.def | 3 - .../node.tag/ipv6/destination/address/node.def | 2 - .../match/node.tag/ipv6/destination/node.def | 1 - .../match/node.tag/ipv6/destination/port/node.def | 3 - .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 ----- .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 ---- .../match/node.tag/ipv6/source/address/node.def | 2 - .../node.tag/match/node.tag/ipv6/source/node.def | 1 - .../match/node.tag/ipv6/source/port/node.def | 3 - .../class/node.tag/match/node.tag/vif/node.def | 5 -- .../limit/class/node.tag/priority/node.def | 8 -- .../input-policy/limit/description/node.def | 2 - interface-templates/qos-policy/in/node.def | 5 ++ lib/Vyatta/Qos/IngressLimit.pm | 87 -------------------- lib/Vyatta/Qos/TrafficLimiter.pm | 93 ++++++++++++++++++++++ templates/qos-policy/traffic-limiter/node.def | 8 ++ .../traffic-limiter/node.tag/class/node.def | 6 ++ .../node.tag/class/node.tag/bandwidth/node.def | 8 ++ .../node.tag/class/node.tag/burst/node.def | 7 ++ .../node.tag/class/node.tag/description/node.def | 2 + .../node.tag/class/node.tag/match/node.def | 4 + .../node.tag/match/node.tag/description/node.def | 2 + .../match/node.tag/ether/destination/node.def | 2 + .../match/node.tag/ether/protocol/node.def | 3 + .../node.tag/match/node.tag/ether/source/node.def | 2 + .../match/node.tag/ip/destination/address/node.def | 2 + .../match/node.tag/ip/destination/node.def | 1 + .../match/node.tag/ip/destination/port/node.def | 3 + .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 +++++ .../node.tag/match/node.tag/ip/protocol/node.def | 17 ++++ .../match/node.tag/ip/source/address/node.def | 2 + .../node.tag/match/node.tag/ip/source/node.def | 1 + .../match/node.tag/ip/source/port/node.def | 3 + .../node.tag/ipv6/destination/address/node.def | 2 + .../match/node.tag/ipv6/destination/node.def | 1 + .../match/node.tag/ipv6/destination/port/node.def | 3 + .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 +++++ .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 ++++ .../match/node.tag/ipv6/source/address/node.def | 2 + .../node.tag/match/node.tag/ipv6/source/node.def | 1 + .../match/node.tag/ipv6/source/port/node.def | 3 + .../class/node.tag/match/node.tag/vif/node.def | 5 ++ .../node.tag/class/node.tag/priority/node.def | 8 ++ .../traffic-limiter/node.tag/description/node.def | 2 + 60 files changed, 251 insertions(+), 232 deletions(-) delete mode 100644 interface-templates/input-policy/limit/class/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/bandwidth/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/burst/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/description/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/description/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/destination/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/protocol/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/source/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/address/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/port/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/dscp/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/protocol/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/address/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/port/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/address/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/port/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/dscp/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/protocol/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/address/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/port/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/match/node.tag/vif/node.def delete mode 100644 interface-templates/input-policy/limit/class/node.tag/priority/node.def delete mode 100644 interface-templates/input-policy/limit/description/node.def create mode 100644 interface-templates/qos-policy/in/node.def delete mode 100644 lib/Vyatta/Qos/IngressLimit.pm create mode 100644 lib/Vyatta/Qos/TrafficLimiter.pm create mode 100644 templates/qos-policy/traffic-limiter/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def create mode 100644 templates/qos-policy/traffic-limiter/node.tag/description/node.def diff --git a/interface-templates/input-policy/limit/class/node.def b/interface-templates/input-policy/limit/class/node.def deleted file mode 100644 index 2a77af0..0000000 --- a/interface-templates/input-policy/limit/class/node.def +++ /dev/null @@ -1,6 +0,0 @@ -tag: -type: u32 -help: Set class handle -syntax:expression: $VAR(@) >= 1 && $VAR(@) < 4096; "Class identifier must be between 1 and 4095" -comp_help: possible completions - <1-4095> Class ID diff --git a/interface-templates/input-policy/limit/class/node.tag/bandwidth/node.def b/interface-templates/input-policy/limit/class/node.tag/bandwidth/node.def deleted file mode 100644 index 13c70ee..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/bandwidth/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: txt -help: Set the traffic-limit used for this class [REQUIRED] -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" -comp_help: Allowed values: - Bandwidth in Kbps - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) diff --git a/interface-templates/input-policy/limit/class/node.tag/burst/node.def b/interface-templates/input-policy/limit/class/node.tag/burst/node.def deleted file mode 100644 index e22453c..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/burst/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set the burst size for this class (default: 15kb) -default: "15k" -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" -comp_help: Allowed values: - Burst size in bytes - Size with scaling suffix (kb, mb, gb) diff --git a/interface-templates/input-policy/limit/class/node.tag/description/node.def b/interface-templates/input-policy/limit/class/node.tag/description/node.def deleted file mode 100644 index d4241e7..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this traffic class diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.def deleted file mode 100644 index 2a5d021..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.def +++ /dev/null @@ -1,4 +0,0 @@ -tag: -type: txt -syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" -help: Set class matching rule name diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/description/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/description/node.def deleted file mode 100644 index a56c59c..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/destination/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/destination/node.def deleted file mode 100644 index e8be347..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/destination/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet destination address for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/protocol/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/protocol/node.def deleted file mode 100644 index 05d6511..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/protocol/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set Ethernet protocol for this match -syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/source/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/source/node.def deleted file mode 100644 index b993af6..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ether/source/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet source address for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/address/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/address/node.def deleted file mode 100644 index ccd2d14..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP destination address for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/port/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/dscp/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/protocol/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/address/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/address/node.def deleted file mode 100644 index 0bc690a..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP source address for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/port/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ip/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/address/node.def deleted file mode 100644 index 2f608f8..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP destination address for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/dscp/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/protocol/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/address/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/address/node.def deleted file mode 100644 index 23c96c2..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP source address for this match diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/port/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/ipv6/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/vif/node.def b/interface-templates/input-policy/limit/class/node.tag/match/node.tag/vif/node.def deleted file mode 100644 index e22250d..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/match/node.tag/vif/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set Virtual Local Area Network (VLAN) ID for this match -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" -comp_help: possible completions: - <0-4095> Set VLAN ID diff --git a/interface-templates/input-policy/limit/class/node.tag/priority/node.def b/interface-templates/input-policy/limit/class/node.tag/priority/node.def deleted file mode 100644 index a99400d..0000000 --- a/interface-templates/input-policy/limit/class/node.tag/priority/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: u32 -help: Set priority for rule evaluation -default: 20 -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 20 ; \ - "priority must be between 0 and 20" -help: Priority value -comp_help: Priority for traffic limiting evaluation - <0-20> (default 20) diff --git a/interface-templates/input-policy/limit/description/node.def b/interface-templates/input-policy/limit/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/interface-templates/input-policy/limit/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/interface-templates/qos-policy/in/node.def b/interface-templates/qos-policy/in/node.def new file mode 100644 index 0000000..67d3e4b --- /dev/null +++ b/interface-templates/qos-policy/in/node.def @@ -0,0 +1,5 @@ +type: txt +help: Set inbound QOS policy for interface +allowed: /opt/vyatta/sbin/vyatta-qos.pl --list-policy in +update: /opt/vyatta/sbin/vyatta-qos.pl --update-interface $IFNAME in $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-interface $IFNAME in diff --git a/lib/Vyatta/Qos/IngressLimit.pm b/lib/Vyatta/Qos/IngressLimit.pm deleted file mode 100644 index e9e2fbb..0000000 --- a/lib/Vyatta/Qos/IngressLimit.pm +++ /dev/null @@ -1,87 +0,0 @@ -# Ingress traffic limit -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2010 Vyatta, Inc. -# All Rights Reserved. -# **** End License **** - -package Vyatta::Qos::IngressLimit; -use strict; -use warnings; - -require Vyatta::Config; -require Vyatta::Qos::LimiterClass; - - -# Create a new instance based on config information -sub new { - my ( $that, $config, $name ) = @_; - my $self = {}; - my $class = ref($that) || $that; - - bless $self, $class; - $self->_define($config); - - return $self; -} - -# Setup new instance. -sub _define { - my ( $self, $config ) = @_; - my $level = $config->setLevel(); - my @classes = (); - - $self->{_level} = $level; - - # make sure no clash of different types of tc filters - my %matchTypes = (); - foreach my $class ( $config->listNodes("class") ) { - foreach my $match ( $config->listNodes("class $class match") ) { - foreach my $type ( $config->listNodes("class $class match $match") ) { - next if ($type eq 'description'); - $matchTypes{$type} = "$class match $match"; - } - } - } - - if ( scalar keys %matchTypes > 1 && $matchTypes{ip} ) { - print "Match type conflict:\n"; - while ( my ( $type, $usage ) = each(%matchTypes) ) { - print " class $usage $type\n"; - } - die "$level can not match on both ip and other types\n"; - } - - foreach my $id ( $config->listNodes("class") ) { - $config->setLevel("$level class $id"); - push @classes, new Vyatta::Qos::LimiterClass( $config, $id ); - } - $self->{_classes} = \@classes; -} - -sub commands { - my ( $self, $dev, $parent ) = @_; - my $classes = $self->{_classes}; - - foreach my $class (@$classes) { - foreach my $match ( $class->matchRules() ) { - my $police = " police rate " . $class->{rate} - . " action drop burst " . $class->{burst}; - - $match->filter( $dev, $parent, $class->{id}, $class->{priority}, - undef, $police ); - } - } -} - -1; diff --git a/lib/Vyatta/Qos/TrafficLimiter.pm b/lib/Vyatta/Qos/TrafficLimiter.pm new file mode 100644 index 0000000..246d593 --- /dev/null +++ b/lib/Vyatta/Qos/TrafficLimiter.pm @@ -0,0 +1,93 @@ +# Traffic limiter +# This is a rate limiter based on ingress qdisc +# +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2008 Vyatta, Inc. +# All Rights Reserved. +# **** End License **** + +package Vyatta::Qos::TrafficLimiter; +use strict; +use warnings; + +require Vyatta::Config; +require Vyatta::Qos::LimiterClass; + +my %fields = ( + _level => undef, + _classes => undef, +); + +# Create a new instance based on config information +sub new { + my ( $that, $config, $name ) = @_; + my $self = {%fields}; + my $class = ref($that) || $that; + + bless $self, $class; + $self->_define($config); + + return $self; +} + +# Setup new instance. +# Assumes caller has done $config->setLevel to "traffic-limiter $name" +sub _define { + my ( $self, $config ) = @_; + my $level = $config->setLevel(); + my @classes = (); + + $self->{_level} = $level; + + # make sure no clash of different types of tc filters + my %matchTypes = (); + foreach my $class ( $config->listNodes("class") ) { + foreach my $match ( $config->listNodes("class $class match") ) { + foreach my $type ( $config->listNodes("class $class match $match") ) { + next if ($type eq 'description'); + $matchTypes{$type} = "$class match $match"; + } + } + } + + if ( scalar keys %matchTypes > 1 && $matchTypes{ip} ) { + print "Match type conflict:\n"; + while ( my ( $type, $usage ) = each(%matchTypes) ) { + print " class $usage $type\n"; + } + die "$level can not match on both ip and other types\n"; + } + + foreach my $id ( $config->listNodes("class") ) { + $config->setLevel("$level class $id"); + push @classes, new Vyatta::Qos::LimiterClass( $config, $id ); + } + $self->{_classes} = \@classes; +} + +sub commands { + my ( $self, $dev, $parent ) = @_; + my $classes = $self->{_classes}; + + foreach my $class (@$classes) { + foreach my $match ( $class->matchRules() ) { + my $police = " police rate " . $class->{rate} + . " action drop burst " . $class->{burst}; + + $match->filter( $dev, $parent, $class->{id}, $class->{priority}, + undef, $police ); + } + } +} + +1; diff --git a/templates/qos-policy/traffic-limiter/node.def b/templates/qos-policy/traffic-limiter/node.def new file mode 100644 index 0000000..f8bdf26 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set traffic input limiting policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.def new file mode 100644 index 0000000..2a77af0 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.def @@ -0,0 +1,6 @@ +tag: +type: u32 +help: Set class handle +syntax:expression: $VAR(@) >= 1 && $VAR(@) < 4096; "Class identifier must be between 1 and 4095" +comp_help: possible completions + <1-4095> Class ID diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def new file mode 100644 index 0000000..13c70ee --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def @@ -0,0 +1,8 @@ +type: txt +help: Set the traffic-limit used for this class [REQUIRED] +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" +comp_help: Allowed values: + Bandwidth in Kbps + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def new file mode 100644 index 0000000..e22453c --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set the burst size for this class (default: 15kb) +default: "15k" +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" +comp_help: Allowed values: + Burst size in bytes + Size with scaling suffix (kb, mb, gb) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def new file mode 100644 index 0000000..d4241e7 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this traffic class diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def new file mode 100644 index 0000000..2a5d021 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def @@ -0,0 +1,4 @@ +tag: +type: txt +syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" +help: Set class matching rule name diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def new file mode 100644 index 0000000..a56c59c --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def new file mode 100644 index 0000000..e8be347 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet destination address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def new file mode 100644 index 0000000..05d6511 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set Ethernet protocol for this match +syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def new file mode 100644 index 0000000..b993af6 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet source address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def new file mode 100644 index 0000000..ccd2d14 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP destination address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def new file mode 100644 index 0000000..0bc690a --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP source address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def new file mode 100644 index 0000000..2f608f8 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP destination address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def new file mode 100644 index 0000000..23c96c2 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP source address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def new file mode 100644 index 0000000..e22250d --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set Virtual Local Area Network (VLAN) ID for this match +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" +comp_help: possible completions: + <0-4095> Set VLAN ID diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def new file mode 100644 index 0000000..a99400d --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def @@ -0,0 +1,8 @@ +type: u32 +help: Set priority for rule evaluation +default: 20 +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 20 ; \ + "priority must be between 0 and 20" +help: Priority value +comp_help: Priority for traffic limiting evaluation + <0-20> (default 20) diff --git a/templates/qos-policy/traffic-limiter/node.tag/description/node.def b/templates/qos-policy/traffic-limiter/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/qos-policy/traffic-limiter/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy -- cgit v1.2.3 From a6fc0cd96c30422732fd4006dfed22fedc4c624d Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 7 Jun 2010 10:34:51 -0700 Subject: Revert "Allow any Qos policy to be used for input" This reverts commit c8f2c288665143e2b165b7d448555af9d657b56c. Conflicts: scripts/vyatta-qos.pl --- lib/Vyatta/Qos/TrafficLimiter.pm | 11 +++++- scripts/vyatta-qos.pl | 80 ++++++++++++++++++++++++++++------------ 2 files changed, 66 insertions(+), 25 deletions(-) diff --git a/lib/Vyatta/Qos/TrafficLimiter.pm b/lib/Vyatta/Qos/TrafficLimiter.pm index 246d593..2d973c5 100644 --- a/lib/Vyatta/Qos/TrafficLimiter.pm +++ b/lib/Vyatta/Qos/TrafficLimiter.pm @@ -76,8 +76,17 @@ sub _define { } sub commands { - my ( $self, $dev, $parent ) = @_; + my ( $self, $dev, $direction ) = @_; my $classes = $self->{_classes}; + my $parent; + + if ($direction eq 'in') { + $parent = 0xffff; + printf "qdisc add dev %s handle %x: ingress\n", $dev, $parent; + } else { + $parent = 1; + printf "qdisc add dev %s handle $x: prio\n", $dev, $parent; + } foreach my $class (@$classes) { foreach my $match ( $class->matchRules() ) { diff --git a/scripts/vyatta-qos.pl b/scripts/vyatta-qos.pl index e552497..4d882aa 100755 --- a/scripts/vyatta-qos.pl +++ b/scripts/vyatta-qos.pl @@ -26,14 +26,20 @@ use Getopt::Long; my $debug = $ENV{'QOS_DEBUG'}; my %policies = ( - 'traffic-shaper' => 'TrafficShaper', - 'fair-queue' => 'FairQueue', - 'rate-control' => 'RateLimiter', - 'drop-tail' => 'DropTail', - 'network-emulator' => 'NetworkEmulator', - 'round-robin' => 'RoundRobin', - 'priority-queue' => 'Priority', - 'random-detect' => 'RandomDetect', + 'out' => { + 'traffic-shaper' => 'TrafficShaper', + 'fair-queue' => 'FairQueue', + 'rate-limit' => 'RateLimiter', + 'drop-tail' => 'DropTail', + 'network-emulator' => 'NetworkEmulator', + 'round-robin' => 'RoundRobin', + 'priority-queue' => 'Priority', + 'random-detect' => 'RandomDetect', + 'traffic-limiter' => 'TrafficLimiter', + }, + 'in' => { + 'traffic-limiter' => 'TrafficLimiter', + } ); # find policy for name - also check for duplicates @@ -54,13 +60,28 @@ sub find_policy { # class factory for policies ## make_policy('traffic-shaper', 'limited', 'out') sub make_policy { - my ( $type, $name ) = @_; + my ( $type, $name, $direction ) = @_; my $policy_type; - $policy_type = $policies{$type}; + if ($direction) { + $policy_type = $policies{$direction}{$type}; + } + else { + foreach my $direction ( keys %policies ) { + $policy_type = $policies{$direction}{$type}; + last if defined $policy_type; + } + } # This means template exists but we don't know what it is. - return unless ($policy_type); + unless ($policy_type) { + foreach my $direction ( keys %policies ) { + die +"QoS policy $name is type $type and is only valid for $direction\n" + if $policies{$direction}{$type}; + } + die "QoS policy $name has not been created\n"; + } my $config = new Vyatta::Config; $config->setLevel("qos-policy $type $name"); @@ -70,7 +91,7 @@ sub make_policy { require $location; - return $class->new( $config, $name ); + return $class->new( $config, $name, $direction ); } ## list defined qos policy names @@ -78,23 +99,34 @@ sub list_policy { my $config = new Vyatta::Config; $config->setLevel('qos-policy'); - # list all nodes under qos-policy and match those we know about - my @qos = grep { $policies{$_} } $config->listNodes(); - - my @names = (); - foreach my $type (@qos) { + while ( my $direction = shift ) { + my @qos = grep { $policies{$direction}{$_} } $config->listNodes(); + my @names = (); + foreach my $type (@qos) { my @n = $config->listNodes($type); push @names, @n; + } + print join( ' ', @names ), "\n"; } - print join( ' ', sort ( @names )), "\n"; } +my %delcmd = ( + 'out' => 'root', + 'in' => 'parent ffff:', +); + ## delete_interface('eth0') # remove all filters and qdisc's sub delete_interface { my ( $interface ) = @_; + my $arg = $delcmd{$direction}; + + die "bad direction $direction\n" unless $arg; + + my $cmd = "sudo tc qdisc del dev $interface ". $arg . " 2>/dev/null"; - system("sudo tc qdisc del dev $interface root 2>/dev/null"); + # ignore errors (may have no qdisc) + system($cmd); } ## start_interface('ppp0') @@ -123,7 +155,7 @@ sub update_interface { my $policy = find_policy($name); die "Unknown qos-policy $name\n" unless $policy; - my $shaper = make_policy( $policy, $name ); + my $shaper = make_policy( $policy, $name, $direction ); exit 1 unless $shaper; if ( ! -d "/sys/class/net/$device" ) { @@ -131,6 +163,7 @@ sub update_interface { return; } + # Remove old policy delete_interface( $device ); @@ -144,8 +177,7 @@ sub update_interface { select $out; } - my $parent = 1; - $shaper->commands( $device, $parent ); + $shaper->commands( $device, $direction ); return if ($debug); select STDOUT; @@ -154,7 +186,7 @@ sub update_interface { delete_interface( $device ); # replay commands to stdout - $shaper->commands($device, $parent ); + $shaper->commands($device, $direction ); die "TC command failed."; } } @@ -200,7 +232,7 @@ sub create_policy { # Check policy for validity my $shaper = make_policy( $policy, $name ); - die "QoS policy $name has not been created\n" unless $shaper; + exit 1 unless $shaper; } # Configuration changed, reapply to all interfaces. -- cgit v1.2.3 From 31a8ab66f49ad26b376d552ec468b21e15835daf Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 7 Jun 2010 10:46:43 -0700 Subject: Rearrange Qos commands for Larkspur Current (Kenwood and earlier): set qos-policy traffic-shaper TS { ...classes } set qos-policy traffic-limiter TL { ...classes } seq qos-policy network-emulator NE ... set qos-policy random-detect RD ... set qos-policy rate-limiter RC ... set qos-policy round-robin RR ... set interfaces ethernet eth0 qos-policy out TS set interfaces ethernet eth0 qos-policy in TL New (Larkspur and later): set traffic-policy shaper TS { ...classes } set traffic-policy limiter TL { ...classes } seq traffic-policy network-emulator NE ... set traffic-policy random-detect RD ... set traffic-policy rate-control RC ... set traffic-policy round-robin RR ... set interfaces ethernet eth0 traffic-policy out TS set interfaces ethernet eth0 traffic-policy in TL set interfaces ethernet eth0 redirect ifb0 set interfaces ethernet eth0 mirror eth2 Note: 1. Only one of the following is allowed: "redirect", or "mirror" 2. Traffic-policy limiter is allowed with redirection/mirror and takes place before mirror/redirect action (NEW) 3. Limiter policy may applied on output (NEW) 4. Only limiter policies can be applied on input (same as previous releases) This does add some new functionality (#2, and #3) which are possible because of how filter classes are implemented. --- Makefile.am | 4 +- interface-templates/input-policy/mirror/node.def | 3 - interface-templates/input-policy/node.def | 4 - interface-templates/input-policy/redirect/node.def | 3 - interface-templates/mirror/node.def | 15 ++ interface-templates/qos-policy/in/node.def | 5 - interface-templates/qos-policy/node.def | 5 - interface-templates/redirect/node.def | 12 ++ interface-templates/traffic-policy/in/node.def | 5 + interface-templates/traffic-policy/node.def | 1 + interface-templates/traffic-policy/out/node.def | 5 + lib/Vyatta/Qos/IngressMirror.pm | 56 ------ lib/Vyatta/Qos/IngressRedirect.pm | 55 ------ scripts/vyatta-qos.pl | 213 +++++++++------------ templates/qos-policy/drop-tail/node.def | 8 - .../drop-tail/node.tag/description/node.def | 2 - .../drop-tail/node.tag/queue-limit/node.def | 2 - templates/qos-policy/fair-queue/node.def | 8 - .../fair-queue/node.tag/description/node.def | 2 - .../fair-queue/node.tag/hash-interval/node.def | 2 - .../fair-queue/node.tag/queue-limit/node.def | 3 - templates/qos-policy/network-emulator/node.def | 8 - .../network-emulator/node.tag/bandwidth/node.def | 9 - .../network-emulator/node.tag/burst/node.def | 7 - .../network-emulator/node.tag/description/node.def | 2 - .../node.tag/network-delay/node.def | 6 - .../node.tag/packet-corruption/node.def | 6 - .../network-emulator/node.tag/packet-loss/node.def | 6 - .../node.tag/packet-reordering/node.def | 8 - .../network-emulator/node.tag/queue-limit/node.def | 2 - templates/qos-policy/node.def | 2 - templates/qos-policy/random-detect/node.def | 8 - .../random-detect/node.tag/bandwidth/node.def | 11 -- .../random-detect/node.tag/description/node.def | 2 - .../random-detect/node.tag/precedence/node.def | 6 - .../precedence/node.tag/average-packet/node.def | 4 - .../precedence/node.tag/mark-probability/node.def | 5 - .../precedence/node.tag/maximum-threshold/node.def | 5 - .../precedence/node.tag/minimum-threshold/node.def | 5 - .../precedence/node.tag/queue-limit/node.def | 2 - templates/qos-policy/rate-control/node.def | 8 - .../rate-control/node.tag/bandwidth/node.def | 9 - .../rate-control/node.tag/burst/node.def | 7 - .../rate-control/node.tag/description/node.def | 2 - .../rate-control/node.tag/latency/node.def | 7 - templates/qos-policy/round-robin/node.def | 8 - .../qos-policy/round-robin/node.tag/class/node.def | 6 - .../node.tag/class/node.tag/description/node.def | 2 - .../node.tag/class/node.tag/match/node.def | 4 - .../node.tag/match/node.tag/description/node.def | 2 - .../match/node.tag/ether/destination/node.def | 2 - .../match/node.tag/ether/protocol/node.def | 3 - .../node.tag/match/node.tag/ether/source/node.def | 2 - .../node.tag/match/node.tag/interface/node.def | 7 - .../match/node.tag/ip/destination/address/node.def | 2 - .../match/node.tag/ip/destination/node.def | 1 - .../match/node.tag/ip/destination/port/node.def | 3 - .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 -- .../node.tag/match/node.tag/ip/protocol/node.def | 17 -- .../match/node.tag/ip/source/address/node.def | 2 - .../node.tag/match/node.tag/ip/source/node.def | 1 - .../match/node.tag/ip/source/port/node.def | 3 - .../node.tag/ipv6/destination/address/node.def | 2 - .../match/node.tag/ipv6/destination/node.def | 1 - .../match/node.tag/ipv6/destination/port/node.def | 3 - .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 -- .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 -- .../match/node.tag/ipv6/source/address/node.def | 2 - .../node.tag/match/node.tag/ipv6/source/node.def | 1 - .../match/node.tag/ipv6/source/port/node.def | 3 - .../class/node.tag/match/node.tag/vif/node.def | 5 - .../node.tag/class/node.tag/queue-limit/node.def | 2 - .../node.tag/class/node.tag/queue-type/node.def | 8 - .../round-robin/node.tag/default/node.def | 1 - .../node.tag/default/queue-limit/node.def | 2 - .../node.tag/default/queue-type/node.def | 9 - .../round-robin/node.tag/description/node.def | 2 - .../round-robin/node.tag/quantum/node.def | 2 - templates/qos-policy/traffic-limiter/node.def | 8 - .../traffic-limiter/node.tag/class/node.def | 6 - .../node.tag/class/node.tag/bandwidth/node.def | 8 - .../node.tag/class/node.tag/burst/node.def | 7 - .../node.tag/class/node.tag/description/node.def | 2 - .../node.tag/class/node.tag/match/node.def | 4 - .../node.tag/match/node.tag/description/node.def | 2 - .../match/node.tag/ether/destination/node.def | 2 - .../match/node.tag/ether/protocol/node.def | 3 - .../node.tag/match/node.tag/ether/source/node.def | 2 - .../match/node.tag/ip/destination/address/node.def | 2 - .../match/node.tag/ip/destination/node.def | 1 - .../match/node.tag/ip/destination/port/node.def | 3 - .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 -- .../node.tag/match/node.tag/ip/protocol/node.def | 17 -- .../match/node.tag/ip/source/address/node.def | 2 - .../node.tag/match/node.tag/ip/source/node.def | 1 - .../match/node.tag/ip/source/port/node.def | 3 - .../node.tag/ipv6/destination/address/node.def | 2 - .../match/node.tag/ipv6/destination/node.def | 1 - .../match/node.tag/ipv6/destination/port/node.def | 3 - .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 -- .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 -- .../match/node.tag/ipv6/source/address/node.def | 2 - .../node.tag/match/node.tag/ipv6/source/node.def | 1 - .../match/node.tag/ipv6/source/port/node.def | 3 - .../class/node.tag/match/node.tag/vif/node.def | 5 - .../node.tag/class/node.tag/priority/node.def | 8 - .../traffic-limiter/node.tag/description/node.def | 2 - templates/qos-policy/traffic-shaper/node.def | 8 - .../traffic-shaper/node.tag/bandwidth/node.def | 11 -- .../traffic-shaper/node.tag/class/node.def | 6 - .../node.tag/class/node.tag/bandwidth/node.def | 10 - .../node.tag/class/node.tag/burst/node.def | 7 - .../node.tag/class/node.tag/ceiling/node.def | 8 - .../node.tag/class/node.tag/description/node.def | 2 - .../node.tag/class/node.tag/match/node.def | 4 - .../node.tag/match/node.tag/description/node.def | 2 - .../match/node.tag/ether/destination/node.def | 2 - .../match/node.tag/ether/protocol/node.def | 3 - .../node.tag/match/node.tag/ether/source/node.def | 2 - .../node.tag/match/node.tag/interface/node.def | 7 - .../match/node.tag/ip/destination/address/node.def | 2 - .../match/node.tag/ip/destination/node.def | 1 - .../match/node.tag/ip/destination/port/node.def | 3 - .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 -- .../node.tag/match/node.tag/ip/protocol/node.def | 17 -- .../match/node.tag/ip/source/address/node.def | 2 - .../node.tag/match/node.tag/ip/source/node.def | 1 - .../match/node.tag/ip/source/port/node.def | 3 - .../node.tag/ipv6/destination/address/node.def | 2 - .../match/node.tag/ipv6/destination/node.def | 1 - .../match/node.tag/ipv6/destination/port/node.def | 3 - .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 -- .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 -- .../match/node.tag/ipv6/source/address/node.def | 2 - .../node.tag/match/node.tag/ipv6/source/node.def | 1 - .../match/node.tag/ipv6/source/port/node.def | 3 - .../class/node.tag/match/node.tag/vif/node.def | 5 - .../node.tag/class/node.tag/priority/node.def | 5 - .../node.tag/class/node.tag/queue-limit/node.def | 2 - .../node.tag/class/node.tag/queue-type/node.def | 10 - .../node.tag/class/node.tag/set-dscp/node.def | 18 -- .../node.tag/default/bandwidth/node.def | 10 - .../traffic-shaper/node.tag/default/burst/node.def | 7 - .../node.tag/default/ceiling/node.def | 8 - .../traffic-shaper/node.tag/default/node.def | 1 - .../node.tag/default/priority/node.def | 5 - .../node.tag/default/queue-limit/node.def | 2 - .../node.tag/default/queue-type/node.def | 10 - .../node.tag/default/set-dscp/node.def | 18 -- .../traffic-shaper/node.tag/description/node.def | 2 - templates/traffic-policy/drop-tail/node.def | 8 + .../drop-tail/node.tag/description/node.def | 2 + .../drop-tail/node.tag/queue-limit/node.def | 2 + templates/traffic-policy/fair-queue/node.def | 8 + .../fair-queue/node.tag/description/node.def | 2 + .../fair-queue/node.tag/hash-interval/node.def | 2 + .../fair-queue/node.tag/queue-limit/node.def | 3 + templates/traffic-policy/limiter/node.def | 8 + .../traffic-policy/limiter/node.tag/class/node.def | 6 + .../node.tag/class/node.tag/bandwidth/node.def | 8 + .../limiter/node.tag/class/node.tag/burst/node.def | 7 + .../node.tag/class/node.tag/description/node.def | 2 + .../limiter/node.tag/class/node.tag/match/node.def | 4 + .../node.tag/match/node.tag/description/node.def | 2 + .../match/node.tag/ether/destination/node.def | 2 + .../match/node.tag/ether/protocol/node.def | 3 + .../node.tag/match/node.tag/ether/source/node.def | 2 + .../match/node.tag/ip/destination/address/node.def | 2 + .../match/node.tag/ip/destination/node.def | 1 + .../match/node.tag/ip/destination/port/node.def | 3 + .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 ++ .../node.tag/match/node.tag/ip/protocol/node.def | 17 ++ .../match/node.tag/ip/source/address/node.def | 2 + .../node.tag/match/node.tag/ip/source/node.def | 1 + .../match/node.tag/ip/source/port/node.def | 3 + .../node.tag/ipv6/destination/address/node.def | 2 + .../match/node.tag/ipv6/destination/node.def | 1 + .../match/node.tag/ipv6/destination/port/node.def | 3 + .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 ++ .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 ++ .../match/node.tag/ipv6/source/address/node.def | 2 + .../node.tag/match/node.tag/ipv6/source/node.def | 1 + .../match/node.tag/ipv6/source/port/node.def | 3 + .../class/node.tag/match/node.tag/vif/node.def | 5 + .../node.tag/class/node.tag/priority/node.def | 8 + .../limiter/node.tag/description/node.def | 2 + templates/traffic-policy/network-emulator/node.def | 8 + .../network-emulator/node.tag/bandwidth/node.def | 9 + .../network-emulator/node.tag/burst/node.def | 7 + .../network-emulator/node.tag/description/node.def | 2 + .../node.tag/network-delay/node.def | 6 + .../node.tag/packet-corruption/node.def | 6 + .../network-emulator/node.tag/packet-loss/node.def | 6 + .../node.tag/packet-reordering/node.def | 8 + .../network-emulator/node.tag/queue-limit/node.def | 2 + templates/traffic-policy/node.def | 2 + templates/traffic-policy/random-detect/node.def | 8 + .../random-detect/node.tag/bandwidth/node.def | 11 ++ .../random-detect/node.tag/description/node.def | 2 + .../random-detect/node.tag/precedence/node.def | 6 + .../precedence/node.tag/average-packet/node.def | 4 + .../precedence/node.tag/mark-probability/node.def | 5 + .../precedence/node.tag/maximum-threshold/node.def | 5 + .../precedence/node.tag/minimum-threshold/node.def | 5 + .../precedence/node.tag/queue-limit/node.def | 2 + templates/traffic-policy/rate-control/node.def | 8 + .../rate-control/node.tag/bandwidth/node.def | 9 + .../rate-control/node.tag/burst/node.def | 7 + .../rate-control/node.tag/description/node.def | 2 + .../rate-control/node.tag/latency/node.def | 7 + templates/traffic-policy/round-robin/node.def | 8 + .../round-robin/node.tag/class/node.def | 6 + .../node.tag/class/node.tag/description/node.def | 2 + .../node.tag/class/node.tag/match/node.def | 4 + .../node.tag/match/node.tag/description/node.def | 2 + .../match/node.tag/ether/destination/node.def | 2 + .../match/node.tag/ether/protocol/node.def | 3 + .../node.tag/match/node.tag/ether/source/node.def | 2 + .../node.tag/match/node.tag/interface/node.def | 7 + .../match/node.tag/ip/destination/address/node.def | 2 + .../match/node.tag/ip/destination/node.def | 1 + .../match/node.tag/ip/destination/port/node.def | 3 + .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 ++ .../node.tag/match/node.tag/ip/protocol/node.def | 17 ++ .../match/node.tag/ip/source/address/node.def | 2 + .../node.tag/match/node.tag/ip/source/node.def | 1 + .../match/node.tag/ip/source/port/node.def | 3 + .../node.tag/ipv6/destination/address/node.def | 2 + .../match/node.tag/ipv6/destination/node.def | 1 + .../match/node.tag/ipv6/destination/port/node.def | 3 + .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 ++ .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 ++ .../match/node.tag/ipv6/source/address/node.def | 2 + .../node.tag/match/node.tag/ipv6/source/node.def | 1 + .../match/node.tag/ipv6/source/port/node.def | 3 + .../class/node.tag/match/node.tag/vif/node.def | 5 + .../node.tag/class/node.tag/queue-limit/node.def | 2 + .../node.tag/class/node.tag/queue-type/node.def | 8 + .../round-robin/node.tag/default/node.def | 1 + .../node.tag/default/queue-limit/node.def | 2 + .../node.tag/default/queue-type/node.def | 9 + .../round-robin/node.tag/description/node.def | 2 + .../round-robin/node.tag/quantum/node.def | 2 + templates/traffic-policy/shaper/node.def | 8 + .../shaper/node.tag/bandwidth/node.def | 11 ++ .../traffic-policy/shaper/node.tag/class/node.def | 6 + .../node.tag/class/node.tag/bandwidth/node.def | 10 + .../shaper/node.tag/class/node.tag/burst/node.def | 7 + .../node.tag/class/node.tag/ceiling/node.def | 8 + .../node.tag/class/node.tag/description/node.def | 2 + .../shaper/node.tag/class/node.tag/match/node.def | 4 + .../node.tag/match/node.tag/description/node.def | 2 + .../match/node.tag/ether/destination/node.def | 2 + .../match/node.tag/ether/protocol/node.def | 3 + .../node.tag/match/node.tag/ether/source/node.def | 2 + .../node.tag/match/node.tag/interface/node.def | 7 + .../match/node.tag/ip/destination/address/node.def | 2 + .../match/node.tag/ip/destination/node.def | 1 + .../match/node.tag/ip/destination/port/node.def | 3 + .../class/node.tag/match/node.tag/ip/dscp/node.def | 18 ++ .../node.tag/match/node.tag/ip/protocol/node.def | 17 ++ .../match/node.tag/ip/source/address/node.def | 2 + .../node.tag/match/node.tag/ip/source/node.def | 1 + .../match/node.tag/ip/source/port/node.def | 3 + .../node.tag/ipv6/destination/address/node.def | 2 + .../match/node.tag/ipv6/destination/node.def | 1 + .../match/node.tag/ipv6/destination/port/node.def | 3 + .../node.tag/match/node.tag/ipv6/dscp/node.def | 18 ++ .../node.tag/match/node.tag/ipv6/protocol/node.def | 17 ++ .../match/node.tag/ipv6/source/address/node.def | 2 + .../node.tag/match/node.tag/ipv6/source/node.def | 1 + .../match/node.tag/ipv6/source/port/node.def | 3 + .../class/node.tag/match/node.tag/vif/node.def | 5 + .../node.tag/class/node.tag/priority/node.def | 5 + .../node.tag/class/node.tag/queue-limit/node.def | 2 + .../node.tag/class/node.tag/queue-type/node.def | 10 + .../node.tag/class/node.tag/set-dscp/node.def | 18 ++ .../shaper/node.tag/default/bandwidth/node.def | 10 + .../shaper/node.tag/default/burst/node.def | 7 + .../shaper/node.tag/default/ceiling/node.def | 8 + .../shaper/node.tag/default/node.def | 1 + .../shaper/node.tag/default/priority/node.def | 5 + .../shaper/node.tag/default/queue-limit/node.def | 2 + .../shaper/node.tag/default/queue-type/node.def | 10 + .../shaper/node.tag/default/set-dscp/node.def | 18 ++ .../shaper/node.tag/description/node.def | 2 + 286 files changed, 875 insertions(+), 1005 deletions(-) delete mode 100644 interface-templates/input-policy/mirror/node.def delete mode 100644 interface-templates/input-policy/node.def delete mode 100644 interface-templates/input-policy/redirect/node.def create mode 100644 interface-templates/mirror/node.def delete mode 100644 interface-templates/qos-policy/in/node.def delete mode 100644 interface-templates/qos-policy/node.def create mode 100644 interface-templates/redirect/node.def create mode 100644 interface-templates/traffic-policy/in/node.def create mode 100644 interface-templates/traffic-policy/node.def create mode 100644 interface-templates/traffic-policy/out/node.def delete mode 100644 lib/Vyatta/Qos/IngressMirror.pm delete mode 100644 lib/Vyatta/Qos/IngressRedirect.pm delete mode 100644 templates/qos-policy/drop-tail/node.def delete mode 100644 templates/qos-policy/drop-tail/node.tag/description/node.def delete mode 100644 templates/qos-policy/drop-tail/node.tag/queue-limit/node.def delete mode 100644 templates/qos-policy/fair-queue/node.def delete mode 100644 templates/qos-policy/fair-queue/node.tag/description/node.def delete mode 100644 templates/qos-policy/fair-queue/node.tag/hash-interval/node.def delete mode 100644 templates/qos-policy/fair-queue/node.tag/queue-limit/node.def delete mode 100644 templates/qos-policy/network-emulator/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/bandwidth/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/burst/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/description/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/network-delay/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/packet-corruption/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/packet-loss/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/packet-reordering/node.def delete mode 100644 templates/qos-policy/network-emulator/node.tag/queue-limit/node.def delete mode 100644 templates/qos-policy/node.def delete mode 100644 templates/qos-policy/random-detect/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/bandwidth/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/description/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/precedence/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def delete mode 100644 templates/qos-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def delete mode 100644 templates/qos-policy/rate-control/node.def delete mode 100644 templates/qos-policy/rate-control/node.tag/bandwidth/node.def delete mode 100644 templates/qos-policy/rate-control/node.tag/burst/node.def delete mode 100644 templates/qos-policy/rate-control/node.tag/description/node.def delete mode 100644 templates/qos-policy/rate-control/node.tag/latency/node.def delete mode 100644 templates/qos-policy/round-robin/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/description/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/class/node.tag/queue-type/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/default/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/default/queue-limit/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/default/queue-type/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/description/node.def delete mode 100644 templates/qos-policy/round-robin/node.tag/quantum/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def delete mode 100644 templates/qos-policy/traffic-limiter/node.tag/description/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/bandwidth/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/burst/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/description/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/description/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/interface/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/vif/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/priority/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-limit/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-type/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/class/node.tag/set-dscp/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/burst/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/priority/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/queue-limit/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/queue-type/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/default/set-dscp/node.def delete mode 100644 templates/qos-policy/traffic-shaper/node.tag/description/node.def create mode 100644 templates/traffic-policy/drop-tail/node.def create mode 100644 templates/traffic-policy/drop-tail/node.tag/description/node.def create mode 100644 templates/traffic-policy/drop-tail/node.tag/queue-limit/node.def create mode 100644 templates/traffic-policy/fair-queue/node.def create mode 100644 templates/traffic-policy/fair-queue/node.tag/description/node.def create mode 100644 templates/traffic-policy/fair-queue/node.tag/hash-interval/node.def create mode 100644 templates/traffic-policy/fair-queue/node.tag/queue-limit/node.def create mode 100644 templates/traffic-policy/limiter/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/burst/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/description/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/description/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/vif/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/class/node.tag/priority/node.def create mode 100644 templates/traffic-policy/limiter/node.tag/description/node.def create mode 100644 templates/traffic-policy/network-emulator/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/burst/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/description/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/network-delay/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/packet-corruption/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/packet-loss/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/packet-reordering/node.def create mode 100644 templates/traffic-policy/network-emulator/node.tag/queue-limit/node.def create mode 100644 templates/traffic-policy/node.def create mode 100644 templates/traffic-policy/random-detect/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/description/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/precedence/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def create mode 100644 templates/traffic-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def create mode 100644 templates/traffic-policy/rate-control/node.def create mode 100644 templates/traffic-policy/rate-control/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/rate-control/node.tag/burst/node.def create mode 100644 templates/traffic-policy/rate-control/node.tag/description/node.def create mode 100644 templates/traffic-policy/rate-control/node.tag/latency/node.def create mode 100644 templates/traffic-policy/round-robin/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/description/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-type/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/default/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/default/queue-limit/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/default/queue-type/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/description/node.def create mode 100644 templates/traffic-policy/round-robin/node.tag/quantum/node.def create mode 100644 templates/traffic-policy/shaper/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/bandwidth/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/burst/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/ceiling/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/description/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/description/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/interface/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/vif/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/priority/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/queue-limit/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/queue-type/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/class/node.tag/set-dscp/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/bandwidth/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/burst/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/ceiling/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/priority/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/queue-limit/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/queue-type/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/default/set-dscp/node.def create mode 100644 templates/traffic-policy/shaper/node.tag/description/node.def diff --git a/Makefile.am b/Makefile.am index d0971a8..7ca18c1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -17,9 +17,7 @@ share_perl5_DATA += lib/Vyatta/Qos/LimiterClass.pm share_perl5_DATA += lib/Vyatta/Qos/RoundRobin.pm share_perl5_DATA += lib/Vyatta/Qos/NetworkEmulator.pm share_perl5_DATA += lib/Vyatta/Qos/RandomDetect.pm -share_perl5_DATA += lib/Vyatta/Qos/IngressLimit.pm -share_perl5_DATA += lib/Vyatta/Qos/IngressRedirect.pm -share_perl5_DATA += lib/Vyatta/Qos/IngressMirror.pm +share_perl5_DATA += lib/Vyatta/Qos/TrafficLimiter.pm etcdir = /etc etc_SCRIPTS = diff --git a/interface-templates/input-policy/mirror/node.def b/interface-templates/input-policy/mirror/node.def deleted file mode 100644 index 49fb3df..0000000 --- a/interface-templates/input-policy/mirror/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: txt -help: Set incoming packet mirroring destination -allowed: ${vyatta_sbindir}/vyatta-interfaces.pl --show=all diff --git a/interface-templates/input-policy/node.def b/interface-templates/input-policy/node.def deleted file mode 100644 index 8062561..0000000 --- a/interface-templates/input-policy/node.def +++ /dev/null @@ -1,4 +0,0 @@ -help: Set incoming packet policy -commit:expression:exec "/opt/vyatta/sbin/vyatta-qos.pl --check-ingress $IFNAME" -end: /opt/vyatta/sbin/vyatta-qos.pl --update-ingress $IFNAME - diff --git a/interface-templates/input-policy/redirect/node.def b/interface-templates/input-policy/redirect/node.def deleted file mode 100644 index 5582d07..0000000 --- a/interface-templates/input-policy/redirect/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: txt -help: Set incoming packet redirection destination -allowed: ${vyatta_sbindir}/vyatta-interfaces.pl --show=all diff --git a/interface-templates/mirror/node.def b/interface-templates/mirror/node.def new file mode 100644 index 0000000..cbb3bde --- /dev/null +++ b/interface-templates/mirror/node.def @@ -0,0 +1,15 @@ +type: txt +help: Set incoming packet mirroring destination +allowed: ${vyatta_sbindir}/vyatta-interfaces.pl --skip=$IFNAME --show=all + +syntax: /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$IFNAME --check=all + +commit:expression: $VAR(../redirect) == ""; \ + "interface $VAR(../@) : can not redirect and mirror on $IFNAME" + +commit:expression: $VAR(../traffic-policy/in) == ""; \ + "interface $VAR(../@) : can not use ingress policy and mirror on $IFNAME" + +end: /opt/vyatta/sbin/vyatta-qos.pl --update-action $IFNAME + + diff --git a/interface-templates/qos-policy/in/node.def b/interface-templates/qos-policy/in/node.def deleted file mode 100644 index 67d3e4b..0000000 --- a/interface-templates/qos-policy/in/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: txt -help: Set inbound QOS policy for interface -allowed: /opt/vyatta/sbin/vyatta-qos.pl --list-policy in -update: /opt/vyatta/sbin/vyatta-qos.pl --update-interface $IFNAME in $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-interface $IFNAME in diff --git a/interface-templates/qos-policy/node.def b/interface-templates/qos-policy/node.def deleted file mode 100644 index 2b8a36f..0000000 --- a/interface-templates/qos-policy/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: txt -help: Set outbound QOS policy for interface -allowed: /opt/vyatta/sbin/vyatta-qos.pl --list-policy -update: /opt/vyatta/sbin/vyatta-qos.pl --update-interface $IFNAME $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-interface $IFNAME diff --git a/interface-templates/redirect/node.def b/interface-templates/redirect/node.def new file mode 100644 index 0000000..6f0bd60 --- /dev/null +++ b/interface-templates/redirect/node.def @@ -0,0 +1,12 @@ +type: txt +help: Set incoming packet redirection destination +allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --skip=$IFNAME --show=all + +syntax: /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$IFNAME --check=all +commit:expression: $VAR(../mirror) == "";\ + "interface $VAR(../@) : can not redirect and mirror on $IFNAME" + +commit:expression: $VAR(../traffic-policy/in) == ""; \ + "interface $VAR(../@) : can not use ingress policy and redirect on $IFNAME" + +end: /opt/vyatta/sbin/vyatta-qos.pl --update-action $IFNAME diff --git a/interface-templates/traffic-policy/in/node.def b/interface-templates/traffic-policy/in/node.def new file mode 100644 index 0000000..901fae8 --- /dev/null +++ b/interface-templates/traffic-policy/in/node.def @@ -0,0 +1,5 @@ +type: txt +help: Set ingress traffic policy for interface +allowed: /opt/vyatta/sbin/vyatta-qos.pl --list-policy in +update: /opt/vyatta/sbin/vyatta-qos.pl --update-interface $IFNAME in $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-interface $IFNAME in diff --git a/interface-templates/traffic-policy/node.def b/interface-templates/traffic-policy/node.def new file mode 100644 index 0000000..d13c6cd --- /dev/null +++ b/interface-templates/traffic-policy/node.def @@ -0,0 +1 @@ +help: Set traffic-policy for interface diff --git a/interface-templates/traffic-policy/out/node.def b/interface-templates/traffic-policy/out/node.def new file mode 100644 index 0000000..e22793b --- /dev/null +++ b/interface-templates/traffic-policy/out/node.def @@ -0,0 +1,5 @@ +type: txt +help: Set egress traffic policy for interface +allowed: /opt/vyatta/sbin/vyatta-qos.pl --list-policy out +update: /opt/vyatta/sbin/vyatta-qos.pl --update-interface $IFNAME out $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-interface $IFNAME out diff --git a/lib/Vyatta/Qos/IngressMirror.pm b/lib/Vyatta/Qos/IngressMirror.pm deleted file mode 100644 index d3e52c0..0000000 --- a/lib/Vyatta/Qos/IngressMirror.pm +++ /dev/null @@ -1,56 +0,0 @@ -# Ingress Mirror -# Duplicate all packets to another interface -# This is useful for some forms of IDS or capture -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2010 Vyatta, Inc. -# All Rights Reserved. -# **** End License **** - -package Vyatta::Qos::IngressMirror; -use strict; -use warnings; - -require Vyatta::Config; - -sub new { - my ( $that, $config, $name ) = @_; - my $self = {}; - my $class = ref($that) || $that; - - bless $self, $class; - $self->_define($config); - - return $self; -} - -# Setup new instance. -sub _define { - my ( $self, $config ) = @_; - # config is at level: interfaces ethernet $dev input-policy redirect - $self->{_target} = $config->returnValue(); -} - -sub commands { - my ( $self, $dev, $parent ) = @_; - my $target = $self->{_target}; - - # Apply filter to ingress qdisc - # NB: action is egress because we are in ingress (upside down) - printf "filter add dev %s parent %x: ", $dev, $parent; - print " protocol all prio 10 u32"; - print " match u32 0 0 flowid 1:1"; - print " action mirred egress mirror dev $target\n"; -} - -1; diff --git a/lib/Vyatta/Qos/IngressRedirect.pm b/lib/Vyatta/Qos/IngressRedirect.pm deleted file mode 100644 index 2bffd30..0000000 --- a/lib/Vyatta/Qos/IngressRedirect.pm +++ /dev/null @@ -1,55 +0,0 @@ -# Ingress Redirect -# Forward all packets to another interface -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2010 Vyatta, Inc. -# All Rights Reserved. -# **** End License **** - -package Vyatta::Qos::IngressRedirect; -use strict; -use warnings; - -require Vyatta::Config; - -sub new { - my ( $that, $config, $name ) = @_; - my $self = {}; - my $class = ref($that) || $that; - - bless $self, $class; - $self->_define($config); - - return $self; -} - -# Setup new instance. -sub _define { - my ( $self, $config, $dev ) = @_; - # config is at level: interfaces ethernet $dev input-policy redirect - $self->{_target} = $config->returnValue(); -} - -sub commands { - my ( $self, $dev, $parent ) = @_; - my $target = $self->{_target}; - - # Apply filter to ingress qdisc - # NB: action is egress because we are in ingress (upside down) - printf "filter add dev %s parent %x: ", $dev, $parent; - print " protocol all prio 10 u32"; - print " match u32 0 0 flowid 1:1"; - print " action mirred egress redirect dev $target\n"; -} - -1; diff --git a/scripts/vyatta-qos.pl b/scripts/vyatta-qos.pl index 4d882aa..d901027 100755 --- a/scripts/vyatta-qos.pl +++ b/scripts/vyatta-qos.pl @@ -27,17 +27,17 @@ my $debug = $ENV{'QOS_DEBUG'}; my %policies = ( 'out' => { - 'traffic-shaper' => 'TrafficShaper', - 'fair-queue' => 'FairQueue', - 'rate-limit' => 'RateLimiter', - 'drop-tail' => 'DropTail', - 'network-emulator' => 'NetworkEmulator', - 'round-robin' => 'RoundRobin', + 'shaper' => 'TrafficShaper', + 'limiter' => 'TrafficLimiter', + 'fair-queue' => 'FairQueue', + 'rate-control' => 'RateLimiter', + 'drop-tail' => 'DropTail', + 'network-emulator' => 'NetworkEmulator', + 'round-robin' => 'RoundRobin', 'priority-queue' => 'Priority', 'random-detect' => 'RandomDetect', - 'traffic-limiter' => 'TrafficLimiter', }, - 'in' => { + 'in' => { 'traffic-limiter' => 'TrafficLimiter', } ); @@ -48,7 +48,7 @@ sub find_policy { my $name = shift; my $config = new Vyatta::Config; - $config->setLevel('qos-policy'); + $config->setLevel('traffic-policy'); my @policy = grep { $config->exists("$_ $name") } $config->listNodes(); die "Policy name \"$name\" conflict, used by: ", join( ' ', @policy ), "\n" @@ -65,8 +65,7 @@ sub make_policy { if ($direction) { $policy_type = $policies{$direction}{$type}; - } - else { + } else { foreach my $direction ( keys %policies ) { $policy_type = $policies{$direction}{$type}; last if defined $policy_type; @@ -84,7 +83,7 @@ sub make_policy { } my $config = new Vyatta::Config; - $config->setLevel("qos-policy $type $name"); + $config->setLevel("traffic-policy $type $name"); my $location = "Vyatta/Qos/$policy_type.pm"; my $class = "Vyatta::Qos::$policy_type"; @@ -97,7 +96,7 @@ sub make_policy { ## list defined qos policy names sub list_policy { my $config = new Vyatta::Config; - $config->setLevel('qos-policy'); + $config->setLevel('traffic-policy'); while ( my $direction = shift ) { my @qos = grep { $policies{$direction}{$_} } $config->listNodes(); @@ -118,7 +117,7 @@ my %delcmd = ( ## delete_interface('eth0') # remove all filters and qdisc's sub delete_interface { - my ( $interface ) = @_; + my ( $interface, $direction ) = @_; my $arg = $delcmd{$direction}; die "bad direction $direction\n" unless $arg; @@ -141,36 +140,35 @@ sub start_interface { my $config = new Vyatta::Config; $config->setLevel( $path ); - my $policy = $config->returnValue('qos-policy'); - next unless $policy; + my $policy = $config->returnValue('traffic-policy'); - update_interface( $ifname, $policy ); + update_interface( $ifname, $policy ) if ($policy); + update_action( $ifname ); } } ## update_interface('eth0', 'my-shaper') # update policy to interface sub update_interface { - my ( $device, $name ) = @_; + my ( $device, $direction, $name ) = @_; my $policy = find_policy($name); - die "Unknown qos-policy $name\n" unless $policy; + die "Unknown traffic-policy $name\n" unless $policy; my $shaper = make_policy( $policy, $name, $direction ); exit 1 unless $shaper; if ( ! -d "/sys/class/net/$device" ) { - warn "$device not present yet, qos-policy will be applied later\n"; + warn "$device not present yet, traffic-policy will be applied later\n"; return; } - # Remove old policy - delete_interface( $device ); + delete_interface( $device, $direction ); # When doing debugging just echo the commands my $out; unless ($debug) { - open $out, "|-" + open $out, '|-' or exec qw:sudo /sbin/tc -batch -: or die "Tc setup failed: $!\n"; @@ -178,12 +176,14 @@ sub update_interface { } $shaper->commands( $device, $direction ); + return if ($debug); select STDOUT; - unless (close $out) { + + unless(close($out)) { # cleanup any partial commands - delete_interface( $device ); + delete_interface( $device, $direction ); # replay commands to stdout $shaper->commands($device, $direction ); @@ -191,8 +191,7 @@ sub update_interface { } } - -# return array of references to (name, policy) +# return array of references to (name, direction, policy) sub interfaces_using { my $policy = shift; my $config = new Vyatta::Config; @@ -201,15 +200,17 @@ sub interfaces_using { foreach my $name ( getInterfaces() ) { my $intf = new Vyatta::Interface($name); next unless $intf; - my $path = $intf->path(); - next unless $path; - - $config->setLevel($path); - my $cur = $config->returnValue('qos-policy'); - next unless $cur; - - # these are arguments to update_interface() - push @inuse, [ $name, $policy ] if ($cur eq $policy); + my $level = $intf->path() . ' traffic-policy'; + $config->setLevel($level); + + foreach my $direction ($config->listNodes()) { + my $cur = $config->returnValue($direction); + next unless $cur; + + # these are arguments to update_interface() + push @inuse, [ $name, $direction, $policy ] + if ($cur eq $policy); + } } return @inuse; } @@ -220,7 +221,7 @@ sub delete_policy { # interfaces_using returns array of array and only want name my @inuse = map { @$_[0] } interfaces_using($name); - die "Can not delete qos-policy $name, still applied" + die "Can not delete traffic-policy $name, still applied" . " to interface ", join(' ', @inuse), "\n" if @inuse; } @@ -251,82 +252,57 @@ sub apply_policy { } } -# ingress policy factory -sub ingress_policy { - my ($ifname) = @_; - my $intf = new Vyatta::Interface($ifname); - die "Unknown interface name $ifname\n" unless $intf; - - my $path = $intf->path(); - unless ($path) { - warn "Can't find $ifname in configuration\n"; - exit 0; +# +# This is used for actions mirror and redirect +sub update_action { + while ( my $dev = shift ) { + apply_action($dev); } - - my $config = new Vyatta::Config; - $config->setLevel( "$path input-policy" ); - - my @names = $config->listNodes(); - return if ($#names < 0); - - die "Only one incoming policy is allowed\n" if ($#names > 0); - - $config->setLevel( "$path input-policy " . $names[0] ); - my $type = ucfirst($names[0]); - my $location = "Vyatta/Qos/Ingress$type.pm"; - require $location; - - my $class = "Vyatta::Qos::Ingress$type"; - return $class->new( $config, $ifname ); } + +sub apply_action{ + my $dev = shift; + my $interface = new Vyatta::Interface($dev); + die "Unknown interface type: $dev" unless $interface; -# check definition of input filtering -sub check_ingress { - my $device = shift; - - my $ingress = ingress_policy( $device ); - return unless $ingress; -} - -# sets up input filtering -sub update_ingress { - my $device = shift; - - die "Interface $device not present\n" - unless (-d "/sys/class/net/$device"); - - # Drop existing ingress and recreate - system("sudo tc qdisc del dev $device ingress 2>/dev/null"); + my $path = $interface->path(); + next unless $path; - my $ingress = ingress_policy( $device ); - return unless $ingress; - - system("sudo tc qdisc add dev $device ingress") == 0 - or die "Can not set ingress qdisc"; - - # When doing debugging just echo the commands - my $out; - unless ($debug) { - open $out, "|-" - or exec qw:sudo /sbin/tc -batch -: - or die "Tc setup failed: $!\n"; - - select $out; + my $config = new Vyatta::Config; + $config->setLevel( $path ); + + my $ingress = $config->returnValue('traffic-policy in'); + + foreach my $action (qw(mirror redirect)) { + my $target = $config->returnValue($action); + next unless $target; + + # TODO support combination of limiting and redirect/mirror + die "interface $dev: combination of $action" + . " and traffic-policy $ingress not supported\n" + if ($ingress); + + # Clear existing ingress + system("sudo tc qdisc del dev $dev parent ffff: 2>/dev/null"); + + system("sudo tc qdisc add dev $dev handle ffff: ingress") == 0 + or die "tc qdisc ingress failed"; + + my $cmd = + "tc filter add dev $dev parent ffff:" + . " protocol all prio 10 u32" + . " match u32 0 0 flowid 1:1" + . " action mirred egress $action dev $target"; + + system($cmd) == 0 + or die "tc action $action command failed"; + + return; } - my $parent = 0xffff; - $ingress->commands( $device, $parent ); - return if ($debug); - - select STDOUT; - unless (close $out) { - # cleanup any partial commands - system("sudo tc del dev $device ingress 2>/dev/null"); - - # replay commands to stdout - $ingress->commands($device, $parent ); - die "TC command failed."; - } + # Drop what ever was there before... + system("sudo tc qdisc del dev $dev parent ffff: 2>/dev/null") + unless($ingress); } sub usage { @@ -339,22 +315,13 @@ usage: vyatta-qos.pl --list-policy vyatta-qos.pl --update-interface interface policy-name vyatta-qos.pl --delete-interface interface - vyatta-qos.pl --check-ingress interface - vyatta-qos.pl --update-ingress interface + vyatta-qos.pl --start-interface interface EOF exit 1; } -my @updateInterface = (); -my $deleteInterface; - -my $listPolicy; -my @createPolicy = (); -my @applyPolicy = (); -my @deletePolicy = (); -my @startList = (); - -my ($checkIngress, $updateIngress); +my (@startList, @updateInterface, $deleteInterface, $updateAction); +my ($listPolicy, @createPolicy, @applyPolicy, @deletePolicy); GetOptions( "start-interface=s" => \@startList, @@ -366,8 +333,8 @@ GetOptions( "create-policy=s{2}" => \@createPolicy, "apply-policy=s" => \@applyPolicy, - "check-ingress=s" => \$checkIngress, - "update-ingress=s" => \$updateIngress + "update-action=s" => \$updateAction, + ) or usage(); delete_interface($deleteInterface) if ( $deleteInterface ); @@ -379,6 +346,4 @@ create_policy(@createPolicy) if ( $#createPolicy == 1 ); delete_policy(@deletePolicy) if (@deletePolicy); apply_policy(@applyPolicy) if (@applyPolicy); -check_ingress($checkIngress) if ($checkIngress); -update_ingress($updateIngress) if ($updateIngress); - +update_action($updateAction) if ($updateAction); diff --git a/templates/qos-policy/drop-tail/node.def b/templates/qos-policy/drop-tail/node.def deleted file mode 100644 index 1bbb25f..0000000 --- a/templates/qos-policy/drop-tail/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set drop tail queue (FIFO) policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/drop-tail/node.tag/description/node.def b/templates/qos-policy/drop-tail/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/drop-tail/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/drop-tail/node.tag/queue-limit/node.def b/templates/qos-policy/drop-tail/node.tag/queue-limit/node.def deleted file mode 100644 index fe3b4dd..0000000 --- a/templates/qos-policy/drop-tail/node.tag/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) [REQUIRED] diff --git a/templates/qos-policy/fair-queue/node.def b/templates/qos-policy/fair-queue/node.def deleted file mode 100644 index 1966ab6..0000000 --- a/templates/qos-policy/fair-queue/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set fair queueing policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/fair-queue/node.tag/description/node.def b/templates/qos-policy/fair-queue/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/fair-queue/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/fair-queue/node.tag/hash-interval/node.def b/templates/qos-policy/fair-queue/node.tag/hash-interval/node.def deleted file mode 100644 index f670274..0000000 --- a/templates/qos-policy/fair-queue/node.tag/hash-interval/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set rehash interval (seconds) diff --git a/templates/qos-policy/fair-queue/node.tag/queue-limit/node.def b/templates/qos-policy/fair-queue/node.tag/queue-limit/node.def deleted file mode 100644 index 471bd5b..0000000 --- a/templates/qos-policy/fair-queue/node.tag/queue-limit/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -syntax:expression: $VAR(@) > 1 ; "Queue limit must greater than 1" -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/network-emulator/node.def b/templates/qos-policy/network-emulator/node.def deleted file mode 100644 index 9a89c53..0000000 --- a/templates/qos-policy/network-emulator/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Setup network emulator policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/network-emulator/node.tag/bandwidth/node.def b/templates/qos-policy/network-emulator/node.tag/bandwidth/node.def deleted file mode 100644 index db8ca65..0000000 --- a/templates/qos-policy/network-emulator/node.tag/bandwidth/node.def +++ /dev/null @@ -1,9 +0,0 @@ -type: txt -help: Set the bandwidth limit -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" -comp_help: Allowed values: - Bandwidth in Kbps per second - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) - diff --git a/templates/qos-policy/network-emulator/node.tag/burst/node.def b/templates/qos-policy/network-emulator/node.tag/burst/node.def deleted file mode 100644 index 4df45de..0000000 --- a/templates/qos-policy/network-emulator/node.tag/burst/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set the burst size -default: "15k" -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" -comp_help: Allowed values: - Burst size in bytes - Size with scaling suffix (kb, mb, gb) diff --git a/templates/qos-policy/network-emulator/node.tag/description/node.def b/templates/qos-policy/network-emulator/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/network-emulator/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/network-emulator/node.tag/network-delay/node.def b/templates/qos-policy/network-emulator/node.tag/network-delay/node.def deleted file mode 100644 index 40b8437..0000000 --- a/templates/qos-policy/network-emulator/node.tag/network-delay/node.def +++ /dev/null @@ -1,6 +0,0 @@ -type: txt -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" -help: Setup network delay -comp_help: Additional network delay in milliseconds - Latency in milliseconds - Time with suffx (secs, ms, us) diff --git a/templates/qos-policy/network-emulator/node.tag/packet-corruption/node.def b/templates/qos-policy/network-emulator/node.tag/packet-corruption/node.def deleted file mode 100644 index fb0e975..0000000 --- a/templates/qos-policy/network-emulator/node.tag/packet-corruption/node.def +++ /dev/null @@ -1,6 +0,0 @@ -type: txt -help: Set emulated packet data corruption rate -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent $VAR(@)" -comp_help: Allowed values: - %% Percentage of packets affected - diff --git a/templates/qos-policy/network-emulator/node.tag/packet-loss/node.def b/templates/qos-policy/network-emulator/node.tag/packet-loss/node.def deleted file mode 100644 index 6501d7a..0000000 --- a/templates/qos-policy/network-emulator/node.tag/packet-loss/node.def +++ /dev/null @@ -1,6 +0,0 @@ -type: txt -help: Set emulated packet loss rate -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent $VAR(@)" -comp_help: Allowed values: - %% Percentage of packets affected - diff --git a/templates/qos-policy/network-emulator/node.tag/packet-reordering/node.def b/templates/qos-policy/network-emulator/node.tag/packet-reordering/node.def deleted file mode 100644 index ee5c64a..0000000 --- a/templates/qos-policy/network-emulator/node.tag/packet-reordering/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: txt -help: Set emulated packet reordering percentage -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent $VAR(@)" -commit:expression: $VAR(../network-delay) != "" ; \ - "Must specify network-delay for packet reordering" -comp_help: Allowed values: - %% Percentage of packets affected - diff --git a/templates/qos-policy/network-emulator/node.tag/queue-limit/node.def b/templates/qos-policy/network-emulator/node.tag/queue-limit/node.def deleted file mode 100644 index 49c47b4..0000000 --- a/templates/qos-policy/network-emulator/node.tag/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/node.def b/templates/qos-policy/node.def deleted file mode 100644 index e6a2afc..0000000 --- a/templates/qos-policy/node.def +++ /dev/null @@ -1,2 +0,0 @@ -priority: 900 -help: Configure Quality of Service (QOS) policy type diff --git a/templates/qos-policy/random-detect/node.def b/templates/qos-policy/random-detect/node.def deleted file mode 100644 index 7dc1caa..0000000 --- a/templates/qos-policy/random-detect/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set Weighted Random Early Detect policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/random-detect/node.tag/bandwidth/node.def b/templates/qos-policy/random-detect/node.tag/bandwidth/node.def deleted file mode 100644 index eb0d4d9..0000000 --- a/templates/qos-policy/random-detect/node.tag/bandwidth/node.def +++ /dev/null @@ -1,11 +0,0 @@ -type: txt -help: Set the available bandwidth for this policy -default: "auto" -syntax:expression: $VAR(@) == "auto" || \ - exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" -comp_help: Allowed values: - auto Set bandwidth based on interface speed (default) - Bandwidth in Kbps - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) diff --git a/templates/qos-policy/random-detect/node.tag/description/node.def b/templates/qos-policy/random-detect/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/random-detect/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/random-detect/node.tag/precedence/node.def b/templates/qos-policy/random-detect/node.tag/precedence/node.def deleted file mode 100644 index ac63dd6..0000000 --- a/templates/qos-policy/random-detect/node.tag/precedence/node.def +++ /dev/null @@ -1,6 +0,0 @@ -tag: -type: u32 -help: Set precedence values -syntax:expression: $VAR(@) >= 0 && $VAR(@) < 8; "IP precedence value must be between 0 and 7" -comp_help: possible completions - <0-7> IP precedence number diff --git a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def b/templates/qos-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def deleted file mode 100644 index 23cdb0f..0000000 --- a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def +++ /dev/null @@ -1,4 +0,0 @@ -type: u32 -help: Average packet size (bytes) -default: 1024 -syntax:expression: $VAR(@) >= 16 && $VAR(@) <= 10240 ; "Average packet size must be between 16 and 10240" diff --git a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def b/templates/qos-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def deleted file mode 100644 index 34964af..0000000 --- a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set the mark probability for this precedence -syntax:expression: $VAR(@) > 0 ; "Mark probability must be greater than 0" -comp_help: Allowed values: - Numeric value ( 1 / N ) diff --git a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def b/templates/qos-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def deleted file mode 100644 index 3032d80..0000000 --- a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set the maximum threshold for random detection -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4096; "Threshold must be between 0 and 4096" -comp_help: Allowed values: - Threshold in packets diff --git a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def b/templates/qos-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def deleted file mode 100644 index fe86423..0000000 --- a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set the minimum threshold for random detection -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4096; "Threshold must be between 0 and 4096" -comp_help: Allowed values: - Threshold in packets diff --git a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def b/templates/qos-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def deleted file mode 100644 index 49c47b4..0000000 --- a/templates/qos-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/rate-control/node.def b/templates/qos-policy/rate-control/node.def deleted file mode 100644 index 57bf98e..0000000 --- a/templates/qos-policy/rate-control/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set rate limiting policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/rate-control/node.tag/bandwidth/node.def b/templates/qos-policy/rate-control/node.tag/bandwidth/node.def deleted file mode 100644 index db8ca65..0000000 --- a/templates/qos-policy/rate-control/node.tag/bandwidth/node.def +++ /dev/null @@ -1,9 +0,0 @@ -type: txt -help: Set the bandwidth limit -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" -comp_help: Allowed values: - Bandwidth in Kbps per second - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) - diff --git a/templates/qos-policy/rate-control/node.tag/burst/node.def b/templates/qos-policy/rate-control/node.tag/burst/node.def deleted file mode 100644 index 4df45de..0000000 --- a/templates/qos-policy/rate-control/node.tag/burst/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set the burst size -default: "15k" -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" -comp_help: Allowed values: - Burst size in bytes - Size with scaling suffix (kb, mb, gb) diff --git a/templates/qos-policy/rate-control/node.tag/description/node.def b/templates/qos-policy/rate-control/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/rate-control/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/rate-control/node.tag/latency/node.def b/templates/qos-policy/rate-control/node.tag/latency/node.def deleted file mode 100644 index bef5491..0000000 --- a/templates/qos-policy/rate-control/node.tag/latency/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" -default: "50ms" -help: Set maximum latency -comp_help: Limit on the queue size based on latency - Latency in milliseconds - Time with suffx (secs, ms, us) diff --git a/templates/qos-policy/round-robin/node.def b/templates/qos-policy/round-robin/node.def deleted file mode 100644 index 4427e1a..0000000 --- a/templates/qos-policy/round-robin/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set deficit round robin based policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/round-robin/node.tag/class/node.def b/templates/qos-policy/round-robin/node.tag/class/node.def deleted file mode 100644 index d606de1..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.def +++ /dev/null @@ -1,6 +0,0 @@ -tag: -type: u32 -help: Set class handle -syntax:expression: $VAR(@) > 1 && $VAR(@) < 4096; "Class identifier must be between 3 and 4095" -comp_help: possible completions - <2-4095> Class ID diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/description/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/description/node.def deleted file mode 100644 index d4241e7..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this traffic class diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.def deleted file mode 100644 index 2a5d021..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.def +++ /dev/null @@ -1,4 +0,0 @@ -tag: -type: txt -syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" -help: Set class matching rule name diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def deleted file mode 100644 index a56c59c..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def deleted file mode 100644 index e8be347..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet destination address for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def deleted file mode 100644 index 05d6511..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set Ethernet protocol for this match -syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def deleted file mode 100644 index b993af6..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet source address for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def deleted file mode 100644 index bb0c1e3..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set interface name for this match -syntax:expression: exec "[ -f /sys/class/net/$VAR(@)/ifindex ]" ; "Interface must already exist" -allowed: local -a array - array=( /sys/class/net/* ) - echo -n ${array[@]##*/} - diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def deleted file mode 100644 index ccd2d14..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP destination address for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def deleted file mode 100644 index 0bc690a..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP source address for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def deleted file mode 100644 index 2f608f8..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP destination address for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def deleted file mode 100644 index 23c96c2..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP source address for this match diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def deleted file mode 100644 index e22250d..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set Virtual Local Area Network (VLAN) ID for this match -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" -comp_help: possible completions: - <0-4095> Set VLAN ID diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def deleted file mode 100644 index 49c47b4..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/round-robin/node.tag/class/node.tag/queue-type/node.def b/templates/qos-policy/round-robin/node.tag/class/node.tag/queue-type/node.def deleted file mode 100644 index ecbcede..0000000 --- a/templates/qos-policy/round-robin/node.tag/class/node.tag/queue-type/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: txt -default: "drop-tail" -syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail"; "Unknown queue-type" -help: Set the queue type for this class -comp_help:Possible completions - fair-queue\tStochastic Fair Queue (SFQ) - drop-tail\tFirst-In-First-Out (FIFO) - priority\tPriority queueing based on DSCP diff --git a/templates/qos-policy/round-robin/node.tag/default/node.def b/templates/qos-policy/round-robin/node.tag/default/node.def deleted file mode 100644 index de9cd5c..0000000 --- a/templates/qos-policy/round-robin/node.tag/default/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Set default policy diff --git a/templates/qos-policy/round-robin/node.tag/default/queue-limit/node.def b/templates/qos-policy/round-robin/node.tag/default/queue-limit/node.def deleted file mode 100644 index 49c47b4..0000000 --- a/templates/qos-policy/round-robin/node.tag/default/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/round-robin/node.tag/default/queue-type/node.def b/templates/qos-policy/round-robin/node.tag/default/queue-type/node.def deleted file mode 100644 index 61f9506..0000000 --- a/templates/qos-policy/round-robin/node.tag/default/queue-type/node.def +++ /dev/null @@ -1,9 +0,0 @@ -type: txt -default: "fair-queue" -syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail"; "Unknown queue-type" -help: Set the queue type for this class -comp_help:Possible completions - fair-queue\tStochastic Fair Queue (SFQ) - drop-tail\tFirst-In-First-Out (FIFO) - priority\tPriority queueing based on DSCP - diff --git a/templates/qos-policy/round-robin/node.tag/description/node.def b/templates/qos-policy/round-robin/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/round-robin/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/round-robin/node.tag/quantum/node.def b/templates/qos-policy/round-robin/node.tag/quantum/node.def deleted file mode 100644 index 62e3ce4..0000000 --- a/templates/qos-policy/round-robin/node.tag/quantum/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set the packet scheduling quantum (bytes) diff --git a/templates/qos-policy/traffic-limiter/node.def b/templates/qos-policy/traffic-limiter/node.def deleted file mode 100644 index f8bdf26..0000000 --- a/templates/qos-policy/traffic-limiter/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set traffic input limiting policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.def deleted file mode 100644 index 2a77af0..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.def +++ /dev/null @@ -1,6 +0,0 @@ -tag: -type: u32 -help: Set class handle -syntax:expression: $VAR(@) >= 1 && $VAR(@) < 4096; "Class identifier must be between 1 and 4095" -comp_help: possible completions - <1-4095> Class ID diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def deleted file mode 100644 index 13c70ee..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/bandwidth/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: txt -help: Set the traffic-limit used for this class [REQUIRED] -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" -comp_help: Allowed values: - Bandwidth in Kbps - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def deleted file mode 100644 index e22453c..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/burst/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set the burst size for this class (default: 15kb) -default: "15k" -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" -comp_help: Allowed values: - Burst size in bytes - Size with scaling suffix (kb, mb, gb) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def deleted file mode 100644 index d4241e7..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this traffic class diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def deleted file mode 100644 index 2a5d021..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.def +++ /dev/null @@ -1,4 +0,0 @@ -tag: -type: txt -syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" -help: Set class matching rule name diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def deleted file mode 100644 index a56c59c..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def deleted file mode 100644 index e8be347..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet destination address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def deleted file mode 100644 index 05d6511..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set Ethernet protocol for this match -syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def deleted file mode 100644 index b993af6..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet source address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def deleted file mode 100644 index ccd2d14..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP destination address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def deleted file mode 100644 index 0bc690a..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP source address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def deleted file mode 100644 index 2f608f8..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP destination address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def deleted file mode 100644 index 23c96c2..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP source address for this match diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def deleted file mode 100644 index e22250d..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/match/node.tag/vif/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set Virtual Local Area Network (VLAN) ID for this match -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" -comp_help: possible completions: - <0-4095> Set VLAN ID diff --git a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def b/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def deleted file mode 100644 index a99400d..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/class/node.tag/priority/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: u32 -help: Set priority for rule evaluation -default: 20 -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 20 ; \ - "priority must be between 0 and 20" -help: Priority value -comp_help: Priority for traffic limiting evaluation - <0-20> (default 20) diff --git a/templates/qos-policy/traffic-limiter/node.tag/description/node.def b/templates/qos-policy/traffic-limiter/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/traffic-limiter/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/qos-policy/traffic-shaper/node.def b/templates/qos-policy/traffic-shaper/node.def deleted file mode 100644 index cd7b07d..0000000 --- a/templates/qos-policy/traffic-shaper/node.def +++ /dev/null @@ -1,8 +0,0 @@ -tag: -type: txt -help: Set traffic shaping based policy -syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" - ; "only alpha-numeric policy name allowed" -create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) -delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) -end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/qos-policy/traffic-shaper/node.tag/bandwidth/node.def b/templates/qos-policy/traffic-shaper/node.tag/bandwidth/node.def deleted file mode 100644 index eb0d4d9..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/bandwidth/node.def +++ /dev/null @@ -1,11 +0,0 @@ -type: txt -help: Set the available bandwidth for this policy -default: "auto" -syntax:expression: $VAR(@) == "auto" || \ - exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" -comp_help: Allowed values: - auto Set bandwidth based on interface speed (default) - Bandwidth in Kbps - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.def deleted file mode 100644 index 8d2bbf4..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.def +++ /dev/null @@ -1,6 +0,0 @@ -tag: -type: u32 -help: Set class handle -syntax:expression: $VAR(@) > 1 && $VAR(@) < 4096; "Class identifier must be between 2 and 4095" -comp_help: possible completions - <2-4095> Class ID diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def deleted file mode 100644 index 91d7762..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def +++ /dev/null @@ -1,10 +0,0 @@ -type: txt -default: "100%" -help: Set the bandwidth used for this class -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" -comp_help: Allowed values: - Bandwidth in Kbps - %% Percentage of overall rate (default 100%%) - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/burst/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/burst/node.def deleted file mode 100644 index e22453c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/burst/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set the burst size for this class (default: 15kb) -default: "15k" -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" -comp_help: Allowed values: - Burst size in bytes - Size with scaling suffix (kb, mb, gb) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def deleted file mode 100644 index 09ba853..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: txt -help: Set the bandwidth limit for this class -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" -comp_help: Allowed values: - Limit in Kbps - %% Percentage of overall rate - Value with scaling suffix - bits per sec (kbit, mbit, gbit) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/description/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/description/node.def deleted file mode 100644 index d4241e7..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this traffic class diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.def deleted file mode 100644 index 2a5d021..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.def +++ /dev/null @@ -1,4 +0,0 @@ -tag: -type: txt -syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" -help: Set class matching rule name diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/description/node.def deleted file mode 100644 index a56c59c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def deleted file mode 100644 index e8be347..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet destination address for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def deleted file mode 100644 index 05d6511..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set Ethernet protocol for this match -syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def deleted file mode 100644 index b993af6..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: macaddr -help: Set the Ethernet source address for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/interface/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/interface/node.def deleted file mode 100644 index bb0c1e3..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/interface/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set interface name for this match -syntax:expression: exec "[ -f /sys/class/net/$VAR(@)/ifindex ]" ; "Interface must already exist" -allowed: local -a array - array=( /sys/class/net/* ) - echo -n ${array[@]##*/} - diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def deleted file mode 100644 index ccd2d14..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP destination address for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def deleted file mode 100644 index 0bc690a..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv4net -help: Set IP source address for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def deleted file mode 100644 index 2f608f8..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP destination address for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def deleted file mode 100644 index 54eef5b..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on destination port or address diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def deleted file mode 100644 index 561899c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP destination port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def deleted file mode 100644 index d02dc5c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Match on Differentiated Services Codepoint (DSCP) -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default match DSCP (000000) - reliability match DSCP (000001) - throughput match DSCP (000010) - lowdelay match DSCP (000100) - priority match DSCP (001000) - immediate match DSCP (010000) - flash match DSCP (011000) - flash-override match DSCP (100000) - critical match DSCP (101000) - internet match DSCP (110000) - network match DSCP (111000) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def deleted file mode 100644 index 9c665c2..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def +++ /dev/null @@ -1,17 +0,0 @@ -type: txt -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 }' IP protocol value or name -Common names: - icmp Internet Control Message Protocol - igmp Internet Group Management Protocol - ggp Gateway-Gateway protocol - tcp Transmission Control Protocol - egp Exterior Gateway Protocol - udp User Datagram Protocol - gre General Routing Encapsulation - ospf Open Shortest Path First IGP - sctp Stream Control Transmission Protocol diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def deleted file mode 100644 index 23c96c2..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: ipv6net -help: Set IP source address for this match diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def deleted file mode 100644 index 4271b94..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Match on source port or address diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def deleted file mode 100644 index ecd96ab..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def +++ /dev/null @@ -1,3 +0,0 @@ -type: u32 -help: Set IP source port for this match -syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/vif/node.def deleted file mode 100644 index e22250d..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/match/node.tag/vif/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set Virtual Local Area Network (VLAN) ID for this match -syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" -comp_help: possible completions: - <0-4095> Set VLAN ID diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/priority/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/priority/node.def deleted file mode 100644 index bcf8d0d..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/priority/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set priority for usage of excess bandwidth -syntax:expression: $VAR(@) >= 0 && $VAR(@) < 8 ; "priority must be between 0 than 7" -comp_help: Priority for usage of excess bandwidth - <0-7> (default 0) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-limit/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-limit/node.def deleted file mode 100644 index 49c47b4..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-type/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-type/node.def deleted file mode 100644 index 295c04c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/queue-type/node.def +++ /dev/null @@ -1,10 +0,0 @@ -type: txt -default: "fair-queue" -syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail", "random-detect"; "Unknown queue-type" -help: Set the queue type for this class -comp_help:Possible completions - fair-queue\tStochastic Fair Queue (SFQ) - drop-tail\tFirst-In-First-Out (FIFO) - priority\tPriority queueing based on DSCP - random-detect\tRandom Early Detection (RED) - diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/set-dscp/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/set-dscp/node.def deleted file mode 100644 index 2fbddac..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/set-dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Change the Differentiated Services (DiffServ) field in the IP header -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default set DSCP to (000000) - reliability set DSCP to (000001) - throughput set DSCP to (000010) - lowdelay set DSCP to (000100) - priority set DSCP to (001000) - immediate set DSCP to (010000) - flash set DSCP to (011000) - flash-override set DSCP to (100000) - critical set DSCP to (101000) - internet set DSCP to (110000) - network set DSCP to (111000) diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def deleted file mode 100644 index f0bc773..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def +++ /dev/null @@ -1,10 +0,0 @@ -type: txt -help: Set the bandwidth used for default traffic [REQUIRED] -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate \$VAR(@)" -comp_help: Allowed values: - Bandwidth in Kbps per second - %% Percentage of overall rate - Value with scaling suffix - bits per sec (kbit, mbit, gbit) - bytes per sec (kbps, mbps, gbps) - diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/burst/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/burst/node.def deleted file mode 100644 index f21eb9b..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/burst/node.def +++ /dev/null @@ -1,7 +0,0 @@ -type: txt -help: Set the burst size for default traffic -default: "15k" -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" -comp_help: Allowed values: - Burst size in bytes - Size with scaling suffix (kb, mb, gb) diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def deleted file mode 100644 index a0cc58b..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def +++ /dev/null @@ -1,8 +0,0 @@ -type: txt -help: Set the bandwidth limit for default traffic -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" -comp_help: Allowed values: - Limit in Kbps - %% Percentage of overall rate - Value with scaling suffix - bits per sec (kbit, mbit, gbit) diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/node.def deleted file mode 100644 index de9cd5c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Set default policy diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/priority/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/priority/node.def deleted file mode 100644 index 54f529b..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/priority/node.def +++ /dev/null @@ -1,5 +0,0 @@ -type: u32 -help: Set priority for usage of extra bandwidth -syntax:expression: $VAR(@) >= 0 && $VAR(@) < 8 ; "priority must be between 0 than 7" -comp_help: Priority for usage of excess bandwidth - <0-7> (default 0) diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/queue-limit/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/queue-limit/node.def deleted file mode 100644 index 49c47b4..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/queue-limit/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: u32 -help: Set maximum queue size (packets) diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/queue-type/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/queue-type/node.def deleted file mode 100644 index 295c04c..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/queue-type/node.def +++ /dev/null @@ -1,10 +0,0 @@ -type: txt -default: "fair-queue" -syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail", "random-detect"; "Unknown queue-type" -help: Set the queue type for this class -comp_help:Possible completions - fair-queue\tStochastic Fair Queue (SFQ) - drop-tail\tFirst-In-First-Out (FIFO) - priority\tPriority queueing based on DSCP - random-detect\tRandom Early Detection (RED) - diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/set-dscp/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/set-dscp/node.def deleted file mode 100644 index a469ae8..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/default/set-dscp/node.def +++ /dev/null @@ -1,18 +0,0 @@ -type: txt -help: Change the Differentiated Services (DiffServ) field in the IP header -syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" -allowed: awk ' - /^#/ { next } - { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value - default set DSCP to (000000) - reliability set DSCP to (000001) - throughput set DSCP to (000010) - lowdelay set DSCP to (000100) - priority set DSCP to (001000) - immediate set DSCP to (010000) - flash set DSCP to (011000) - flash-override set DSCP to (100000) - critical set DSCP to (101000) - internet set DSCP to (110000) - network set DSCP to (111000) diff --git a/templates/qos-policy/traffic-shaper/node.tag/description/node.def b/templates/qos-policy/traffic-shaper/node.tag/description/node.def deleted file mode 100644 index 1e8e64f..0000000 --- a/templates/qos-policy/traffic-shaper/node.tag/description/node.def +++ /dev/null @@ -1,2 +0,0 @@ -type: txt -help: Set description for this queuing policy diff --git a/templates/traffic-policy/drop-tail/node.def b/templates/traffic-policy/drop-tail/node.def new file mode 100644 index 0000000..1bbb25f --- /dev/null +++ b/templates/traffic-policy/drop-tail/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set drop tail queue (FIFO) policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/drop-tail/node.tag/description/node.def b/templates/traffic-policy/drop-tail/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/drop-tail/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/drop-tail/node.tag/queue-limit/node.def b/templates/traffic-policy/drop-tail/node.tag/queue-limit/node.def new file mode 100644 index 0000000..fe3b4dd --- /dev/null +++ b/templates/traffic-policy/drop-tail/node.tag/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) [REQUIRED] diff --git a/templates/traffic-policy/fair-queue/node.def b/templates/traffic-policy/fair-queue/node.def new file mode 100644 index 0000000..1966ab6 --- /dev/null +++ b/templates/traffic-policy/fair-queue/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set fair queueing policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/fair-queue/node.tag/description/node.def b/templates/traffic-policy/fair-queue/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/fair-queue/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/fair-queue/node.tag/hash-interval/node.def b/templates/traffic-policy/fair-queue/node.tag/hash-interval/node.def new file mode 100644 index 0000000..f670274 --- /dev/null +++ b/templates/traffic-policy/fair-queue/node.tag/hash-interval/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set rehash interval (seconds) diff --git a/templates/traffic-policy/fair-queue/node.tag/queue-limit/node.def b/templates/traffic-policy/fair-queue/node.tag/queue-limit/node.def new file mode 100644 index 0000000..471bd5b --- /dev/null +++ b/templates/traffic-policy/fair-queue/node.tag/queue-limit/node.def @@ -0,0 +1,3 @@ +type: u32 +syntax:expression: $VAR(@) > 1 ; "Queue limit must greater than 1" +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/limiter/node.def b/templates/traffic-policy/limiter/node.def new file mode 100644 index 0000000..f8bdf26 --- /dev/null +++ b/templates/traffic-policy/limiter/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set traffic input limiting policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/limiter/node.tag/class/node.def b/templates/traffic-policy/limiter/node.tag/class/node.def new file mode 100644 index 0000000..24d7260 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.def @@ -0,0 +1,6 @@ +tag: +type: u32 +help: Set class handle +syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4090; "Class identifier must be between 1 and 4090" +comp_help: possible completions + <1-4095> Class ID diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/bandwidth/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/bandwidth/node.def new file mode 100644 index 0000000..13c70ee --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/bandwidth/node.def @@ -0,0 +1,8 @@ +type: txt +help: Set the traffic-limit used for this class [REQUIRED] +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" +comp_help: Allowed values: + Bandwidth in Kbps + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/burst/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/burst/node.def new file mode 100644 index 0000000..e22453c --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/burst/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set the burst size for this class (default: 15kb) +default: "15k" +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" +comp_help: Allowed values: + Burst size in bytes + Size with scaling suffix (kb, mb, gb) diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/description/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/description/node.def new file mode 100644 index 0000000..d4241e7 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this traffic class diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.def new file mode 100644 index 0000000..2a5d021 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.def @@ -0,0 +1,4 @@ +tag: +type: txt +syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" +help: Set class matching rule name diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/description/node.def new file mode 100644 index 0000000..a56c59c --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def new file mode 100644 index 0000000..e8be347 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/destination/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet destination address for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def new file mode 100644 index 0000000..05d6511 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set Ethernet protocol for this match +syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def new file mode 100644 index 0000000..b993af6 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ether/source/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet source address for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def new file mode 100644 index 0000000..ccd2d14 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP destination address for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def new file mode 100644 index 0000000..0bc690a --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP source address for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def new file mode 100644 index 0000000..2f608f8 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP destination address for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def new file mode 100644 index 0000000..23c96c2 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP source address for this match diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/vif/node.def new file mode 100644 index 0000000..e22250d --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/match/node.tag/vif/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set Virtual Local Area Network (VLAN) ID for this match +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" +comp_help: possible completions: + <0-4095> Set VLAN ID diff --git a/templates/traffic-policy/limiter/node.tag/class/node.tag/priority/node.def b/templates/traffic-policy/limiter/node.tag/class/node.tag/priority/node.def new file mode 100644 index 0000000..a99400d --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/class/node.tag/priority/node.def @@ -0,0 +1,8 @@ +type: u32 +help: Set priority for rule evaluation +default: 20 +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 20 ; \ + "priority must be between 0 and 20" +help: Priority value +comp_help: Priority for traffic limiting evaluation + <0-20> (default 20) diff --git a/templates/traffic-policy/limiter/node.tag/description/node.def b/templates/traffic-policy/limiter/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/limiter/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/network-emulator/node.def b/templates/traffic-policy/network-emulator/node.def new file mode 100644 index 0000000..9a89c53 --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Setup network emulator policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/network-emulator/node.tag/bandwidth/node.def b/templates/traffic-policy/network-emulator/node.tag/bandwidth/node.def new file mode 100644 index 0000000..db8ca65 --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/bandwidth/node.def @@ -0,0 +1,9 @@ +type: txt +help: Set the bandwidth limit +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" +comp_help: Allowed values: + Bandwidth in Kbps per second + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) + diff --git a/templates/traffic-policy/network-emulator/node.tag/burst/node.def b/templates/traffic-policy/network-emulator/node.tag/burst/node.def new file mode 100644 index 0000000..4df45de --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/burst/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set the burst size +default: "15k" +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" +comp_help: Allowed values: + Burst size in bytes + Size with scaling suffix (kb, mb, gb) diff --git a/templates/traffic-policy/network-emulator/node.tag/description/node.def b/templates/traffic-policy/network-emulator/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/network-emulator/node.tag/network-delay/node.def b/templates/traffic-policy/network-emulator/node.tag/network-delay/node.def new file mode 100644 index 0000000..40b8437 --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/network-delay/node.def @@ -0,0 +1,6 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +help: Setup network delay +comp_help: Additional network delay in milliseconds + Latency in milliseconds + Time with suffx (secs, ms, us) diff --git a/templates/traffic-policy/network-emulator/node.tag/packet-corruption/node.def b/templates/traffic-policy/network-emulator/node.tag/packet-corruption/node.def new file mode 100644 index 0000000..fb0e975 --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/packet-corruption/node.def @@ -0,0 +1,6 @@ +type: txt +help: Set emulated packet data corruption rate +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent $VAR(@)" +comp_help: Allowed values: + %% Percentage of packets affected + diff --git a/templates/traffic-policy/network-emulator/node.tag/packet-loss/node.def b/templates/traffic-policy/network-emulator/node.tag/packet-loss/node.def new file mode 100644 index 0000000..6501d7a --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/packet-loss/node.def @@ -0,0 +1,6 @@ +type: txt +help: Set emulated packet loss rate +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent $VAR(@)" +comp_help: Allowed values: + %% Percentage of packets affected + diff --git a/templates/traffic-policy/network-emulator/node.tag/packet-reordering/node.def b/templates/traffic-policy/network-emulator/node.tag/packet-reordering/node.def new file mode 100644 index 0000000..ee5c64a --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/packet-reordering/node.def @@ -0,0 +1,8 @@ +type: txt +help: Set emulated packet reordering percentage +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent $VAR(@)" +commit:expression: $VAR(../network-delay) != "" ; \ + "Must specify network-delay for packet reordering" +comp_help: Allowed values: + %% Percentage of packets affected + diff --git a/templates/traffic-policy/network-emulator/node.tag/queue-limit/node.def b/templates/traffic-policy/network-emulator/node.tag/queue-limit/node.def new file mode 100644 index 0000000..49c47b4 --- /dev/null +++ b/templates/traffic-policy/network-emulator/node.tag/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/node.def b/templates/traffic-policy/node.def new file mode 100644 index 0000000..e6a2afc --- /dev/null +++ b/templates/traffic-policy/node.def @@ -0,0 +1,2 @@ +priority: 900 +help: Configure Quality of Service (QOS) policy type diff --git a/templates/traffic-policy/random-detect/node.def b/templates/traffic-policy/random-detect/node.def new file mode 100644 index 0000000..7dc1caa --- /dev/null +++ b/templates/traffic-policy/random-detect/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set Weighted Random Early Detect policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/random-detect/node.tag/bandwidth/node.def b/templates/traffic-policy/random-detect/node.tag/bandwidth/node.def new file mode 100644 index 0000000..eb0d4d9 --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/bandwidth/node.def @@ -0,0 +1,11 @@ +type: txt +help: Set the available bandwidth for this policy +default: "auto" +syntax:expression: $VAR(@) == "auto" || \ + exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" +comp_help: Allowed values: + auto Set bandwidth based on interface speed (default) + Bandwidth in Kbps + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) diff --git a/templates/traffic-policy/random-detect/node.tag/description/node.def b/templates/traffic-policy/random-detect/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/random-detect/node.tag/precedence/node.def b/templates/traffic-policy/random-detect/node.tag/precedence/node.def new file mode 100644 index 0000000..ac63dd6 --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/precedence/node.def @@ -0,0 +1,6 @@ +tag: +type: u32 +help: Set precedence values +syntax:expression: $VAR(@) >= 0 && $VAR(@) < 8; "IP precedence value must be between 0 and 7" +comp_help: possible completions + <0-7> IP precedence number diff --git a/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def new file mode 100644 index 0000000..23cdb0f --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/average-packet/node.def @@ -0,0 +1,4 @@ +type: u32 +help: Average packet size (bytes) +default: 1024 +syntax:expression: $VAR(@) >= 16 && $VAR(@) <= 10240 ; "Average packet size must be between 16 and 10240" diff --git a/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def new file mode 100644 index 0000000..34964af --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/mark-probability/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set the mark probability for this precedence +syntax:expression: $VAR(@) > 0 ; "Mark probability must be greater than 0" +comp_help: Allowed values: + Numeric value ( 1 / N ) diff --git a/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def new file mode 100644 index 0000000..3032d80 --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/maximum-threshold/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set the maximum threshold for random detection +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4096; "Threshold must be between 0 and 4096" +comp_help: Allowed values: + Threshold in packets diff --git a/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def new file mode 100644 index 0000000..fe86423 --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/minimum-threshold/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set the minimum threshold for random detection +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4096; "Threshold must be between 0 and 4096" +comp_help: Allowed values: + Threshold in packets diff --git a/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def new file mode 100644 index 0000000..49c47b4 --- /dev/null +++ b/templates/traffic-policy/random-detect/node.tag/precedence/node.tag/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/rate-control/node.def b/templates/traffic-policy/rate-control/node.def new file mode 100644 index 0000000..57bf98e --- /dev/null +++ b/templates/traffic-policy/rate-control/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set rate limiting policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/rate-control/node.tag/bandwidth/node.def b/templates/traffic-policy/rate-control/node.tag/bandwidth/node.def new file mode 100644 index 0000000..db8ca65 --- /dev/null +++ b/templates/traffic-policy/rate-control/node.tag/bandwidth/node.def @@ -0,0 +1,9 @@ +type: txt +help: Set the bandwidth limit +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" +comp_help: Allowed values: + Bandwidth in Kbps per second + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) + diff --git a/templates/traffic-policy/rate-control/node.tag/burst/node.def b/templates/traffic-policy/rate-control/node.tag/burst/node.def new file mode 100644 index 0000000..4df45de --- /dev/null +++ b/templates/traffic-policy/rate-control/node.tag/burst/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set the burst size +default: "15k" +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" +comp_help: Allowed values: + Burst size in bytes + Size with scaling suffix (kb, mb, gb) diff --git a/templates/traffic-policy/rate-control/node.tag/description/node.def b/templates/traffic-policy/rate-control/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/rate-control/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/rate-control/node.tag/latency/node.def b/templates/traffic-policy/rate-control/node.tag/latency/node.def new file mode 100644 index 0000000..bef5491 --- /dev/null +++ b/templates/traffic-policy/rate-control/node.tag/latency/node.def @@ -0,0 +1,7 @@ +type: txt +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --time $VAR(@)" +default: "50ms" +help: Set maximum latency +comp_help: Limit on the queue size based on latency + Latency in milliseconds + Time with suffx (secs, ms, us) diff --git a/templates/traffic-policy/round-robin/node.def b/templates/traffic-policy/round-robin/node.def new file mode 100644 index 0000000..4427e1a --- /dev/null +++ b/templates/traffic-policy/round-robin/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set deficit round robin based policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.def new file mode 100644 index 0000000..d606de1 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.def @@ -0,0 +1,6 @@ +tag: +type: u32 +help: Set class handle +syntax:expression: $VAR(@) > 1 && $VAR(@) < 4096; "Class identifier must be between 3 and 4095" +comp_help: possible completions + <2-4095> Class ID diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/description/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/description/node.def new file mode 100644 index 0000000..d4241e7 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this traffic class diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.def new file mode 100644 index 0000000..2a5d021 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.def @@ -0,0 +1,4 @@ +tag: +type: txt +syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" +help: Set class matching rule name diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def new file mode 100644 index 0000000..a56c59c --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def new file mode 100644 index 0000000..e8be347 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/destination/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet destination address for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def new file mode 100644 index 0000000..05d6511 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set Ethernet protocol for this match +syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def new file mode 100644 index 0000000..b993af6 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ether/source/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet source address for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def new file mode 100644 index 0000000..bb0c1e3 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/interface/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set interface name for this match +syntax:expression: exec "[ -f /sys/class/net/$VAR(@)/ifindex ]" ; "Interface must already exist" +allowed: local -a array + array=( /sys/class/net/* ) + echo -n ${array[@]##*/} + diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def new file mode 100644 index 0000000..ccd2d14 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP destination address for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def new file mode 100644 index 0000000..0bc690a --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP source address for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def new file mode 100644 index 0000000..2f608f8 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP destination address for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def new file mode 100644 index 0000000..23c96c2 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP source address for this match diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def new file mode 100644 index 0000000..e22250d --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/match/node.tag/vif/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set Virtual Local Area Network (VLAN) ID for this match +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" +comp_help: possible completions: + <0-4095> Set VLAN ID diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def new file mode 100644 index 0000000..49c47b4 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-type/node.def b/templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-type/node.def new file mode 100644 index 0000000..ecbcede --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/class/node.tag/queue-type/node.def @@ -0,0 +1,8 @@ +type: txt +default: "drop-tail" +syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail"; "Unknown queue-type" +help: Set the queue type for this class +comp_help:Possible completions + fair-queue\tStochastic Fair Queue (SFQ) + drop-tail\tFirst-In-First-Out (FIFO) + priority\tPriority queueing based on DSCP diff --git a/templates/traffic-policy/round-robin/node.tag/default/node.def b/templates/traffic-policy/round-robin/node.tag/default/node.def new file mode 100644 index 0000000..de9cd5c --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/default/node.def @@ -0,0 +1 @@ +help: Set default policy diff --git a/templates/traffic-policy/round-robin/node.tag/default/queue-limit/node.def b/templates/traffic-policy/round-robin/node.tag/default/queue-limit/node.def new file mode 100644 index 0000000..49c47b4 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/default/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/round-robin/node.tag/default/queue-type/node.def b/templates/traffic-policy/round-robin/node.tag/default/queue-type/node.def new file mode 100644 index 0000000..61f9506 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/default/queue-type/node.def @@ -0,0 +1,9 @@ +type: txt +default: "fair-queue" +syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail"; "Unknown queue-type" +help: Set the queue type for this class +comp_help:Possible completions + fair-queue\tStochastic Fair Queue (SFQ) + drop-tail\tFirst-In-First-Out (FIFO) + priority\tPriority queueing based on DSCP + diff --git a/templates/traffic-policy/round-robin/node.tag/description/node.def b/templates/traffic-policy/round-robin/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy diff --git a/templates/traffic-policy/round-robin/node.tag/quantum/node.def b/templates/traffic-policy/round-robin/node.tag/quantum/node.def new file mode 100644 index 0000000..62e3ce4 --- /dev/null +++ b/templates/traffic-policy/round-robin/node.tag/quantum/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set the packet scheduling quantum (bytes) diff --git a/templates/traffic-policy/shaper/node.def b/templates/traffic-policy/shaper/node.def new file mode 100644 index 0000000..cd7b07d --- /dev/null +++ b/templates/traffic-policy/shaper/node.def @@ -0,0 +1,8 @@ +tag: +type: txt +help: Set traffic shaping based policy +syntax:expression: pattern $VAR(@) "^[[:alnum:]][-_[:alnum:]]*$" + ; "only alpha-numeric policy name allowed" +create: /opt/vyatta/sbin/vyatta-qos.pl --create-policy $VAR(.) $VAR(@) +delete: /opt/vyatta/sbin/vyatta-qos.pl --delete-policy $VAR(@) +end: /opt/vyatta/sbin/vyatta-qos.pl --apply-policy $VAR(@) diff --git a/templates/traffic-policy/shaper/node.tag/bandwidth/node.def b/templates/traffic-policy/shaper/node.tag/bandwidth/node.def new file mode 100644 index 0000000..eb0d4d9 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/bandwidth/node.def @@ -0,0 +1,11 @@ +type: txt +help: Set the available bandwidth for this policy +default: "auto" +syntax:expression: $VAR(@) == "auto" || \ + exec "/opt/vyatta/sbin/vyatta-qos-util.pl --rate $VAR(@)" +comp_help: Allowed values: + auto Set bandwidth based on interface speed (default) + Bandwidth in Kbps + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.def b/templates/traffic-policy/shaper/node.tag/class/node.def new file mode 100644 index 0000000..8d2bbf4 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.def @@ -0,0 +1,6 @@ +tag: +type: u32 +help: Set class handle +syntax:expression: $VAR(@) > 1 && $VAR(@) < 4096; "Class identifier must be between 2 and 4095" +comp_help: possible completions + <2-4095> Class ID diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/bandwidth/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/bandwidth/node.def new file mode 100644 index 0000000..91d7762 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/bandwidth/node.def @@ -0,0 +1,10 @@ +type: txt +default: "100%" +help: Set the bandwidth used for this class +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" +comp_help: Allowed values: + Bandwidth in Kbps + %% Percentage of overall rate (default 100%%) + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/burst/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/burst/node.def new file mode 100644 index 0000000..e22453c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/burst/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set the burst size for this class (default: 15kb) +default: "15k" +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" +comp_help: Allowed values: + Burst size in bytes + Size with scaling suffix (kb, mb, gb) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/ceiling/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/ceiling/node.def new file mode 100644 index 0000000..09ba853 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/ceiling/node.def @@ -0,0 +1,8 @@ +type: txt +help: Set the bandwidth limit for this class +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" +comp_help: Allowed values: + Limit in Kbps + %% Percentage of overall rate + Value with scaling suffix + bits per sec (kbit, mbit, gbit) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/description/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/description/node.def new file mode 100644 index 0000000..d4241e7 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this traffic class diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.def new file mode 100644 index 0000000..2a5d021 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.def @@ -0,0 +1,4 @@ +tag: +type: txt +syntax:expression: pattern $VAR(@) "^[^-]" ; "Match queue name cannot start with \"-\"" +help: Set class matching rule name diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/description/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/description/node.def new file mode 100644 index 0000000..a56c59c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def new file mode 100644 index 0000000..e8be347 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/destination/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet destination address for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def new file mode 100644 index 0000000..05d6511 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/protocol/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set Ethernet protocol for this match +syntax:expression: ($VAR(@) >= 0 && $VAR(@) < 65536) ; "protocol must be between 0 and 65535" diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def new file mode 100644 index 0000000..b993af6 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ether/source/node.def @@ -0,0 +1,2 @@ +type: macaddr +help: Set the Ethernet source address for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/interface/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/interface/node.def new file mode 100644 index 0000000..bb0c1e3 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/interface/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set interface name for this match +syntax:expression: exec "[ -f /sys/class/net/$VAR(@)/ifindex ]" ; "Interface must already exist" +allowed: local -a array + array=( /sys/class/net/* ) + echo -n ${array[@]##*/} + diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def new file mode 100644 index 0000000..ccd2d14 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP destination address for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) 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 new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def new file mode 100644 index 0000000..0bc690a --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv4net +help: Set IP source address for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ip/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def new file mode 100644 index 0000000..2f608f8 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP destination address for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def new file mode 100644 index 0000000..54eef5b --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/node.def @@ -0,0 +1 @@ +help: Match on destination port or address diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def new file mode 100644 index 0000000..561899c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/destination/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP destination port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def new file mode 100644 index 0000000..d02dc5c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Match on Differentiated Services Codepoint (DSCP) +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default match DSCP (000000) + reliability match DSCP (000001) + throughput match DSCP (000010) + lowdelay match DSCP (000100) + priority match DSCP (001000) + immediate match DSCP (010000) + flash match DSCP (011000) + flash-override match DSCP (100000) + critical match DSCP (101000) + internet match DSCP (110000) + network match DSCP (111000) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def new file mode 100644 index 0000000..9c665c2 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/protocol/node.def @@ -0,0 +1,17 @@ +type: txt +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 }' IP protocol value or name +Common names: + icmp Internet Control Message Protocol + igmp Internet Group Management Protocol + ggp Gateway-Gateway protocol + tcp Transmission Control Protocol + egp Exterior Gateway Protocol + udp User Datagram Protocol + gre General Routing Encapsulation + ospf Open Shortest Path First IGP + sctp Stream Control Transmission Protocol diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def new file mode 100644 index 0000000..23c96c2 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/address/node.def @@ -0,0 +1,2 @@ +type: ipv6net +help: Set IP source address for this match diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def new file mode 100644 index 0000000..4271b94 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/node.def @@ -0,0 +1 @@ +help: Match on source port or address diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def new file mode 100644 index 0000000..ecd96ab --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/ipv6/source/port/node.def @@ -0,0 +1,3 @@ +type: u32 +help: Set IP source port for this match +syntax:expression: ($VAR(@) > 0 && $VAR(@) < 65536) ; "port must be between 1 and 65535" diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/vif/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/vif/node.def new file mode 100644 index 0000000..e22250d --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/match/node.tag/vif/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set Virtual Local Area Network (VLAN) ID for this match +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4095; "VLAN ID must be between 0 and 4095" +comp_help: possible completions: + <0-4095> Set VLAN ID diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/priority/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/priority/node.def new file mode 100644 index 0000000..bcf8d0d --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/priority/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set priority for usage of excess bandwidth +syntax:expression: $VAR(@) >= 0 && $VAR(@) < 8 ; "priority must be between 0 than 7" +comp_help: Priority for usage of excess bandwidth + <0-7> (default 0) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/queue-limit/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/queue-limit/node.def new file mode 100644 index 0000000..49c47b4 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/queue-type/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/queue-type/node.def new file mode 100644 index 0000000..295c04c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/queue-type/node.def @@ -0,0 +1,10 @@ +type: txt +default: "fair-queue" +syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail", "random-detect"; "Unknown queue-type" +help: Set the queue type for this class +comp_help:Possible completions + fair-queue\tStochastic Fair Queue (SFQ) + drop-tail\tFirst-In-First-Out (FIFO) + priority\tPriority queueing based on DSCP + random-detect\tRandom Early Detection (RED) + diff --git a/templates/traffic-policy/shaper/node.tag/class/node.tag/set-dscp/node.def b/templates/traffic-policy/shaper/node.tag/class/node.tag/set-dscp/node.def new file mode 100644 index 0000000..2fbddac --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/class/node.tag/set-dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Change the Differentiated Services (DiffServ) field in the IP header +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default set DSCP to (000000) + reliability set DSCP to (000001) + throughput set DSCP to (000010) + lowdelay set DSCP to (000100) + priority set DSCP to (001000) + immediate set DSCP to (010000) + flash set DSCP to (011000) + flash-override set DSCP to (100000) + critical set DSCP to (101000) + internet set DSCP to (110000) + network set DSCP to (111000) diff --git a/templates/traffic-policy/shaper/node.tag/default/bandwidth/node.def b/templates/traffic-policy/shaper/node.tag/default/bandwidth/node.def new file mode 100644 index 0000000..f0bc773 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/bandwidth/node.def @@ -0,0 +1,10 @@ +type: txt +help: Set the bandwidth used for default traffic [REQUIRED] +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate \$VAR(@)" +comp_help: Allowed values: + Bandwidth in Kbps per second + %% Percentage of overall rate + Value with scaling suffix + bits per sec (kbit, mbit, gbit) + bytes per sec (kbps, mbps, gbps) + diff --git a/templates/traffic-policy/shaper/node.tag/default/burst/node.def b/templates/traffic-policy/shaper/node.tag/default/burst/node.def new file mode 100644 index 0000000..f21eb9b --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/burst/node.def @@ -0,0 +1,7 @@ +type: txt +help: Set the burst size for default traffic +default: "15k" +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --burst $VAR(@)" +comp_help: Allowed values: + Burst size in bytes + Size with scaling suffix (kb, mb, gb) diff --git a/templates/traffic-policy/shaper/node.tag/default/ceiling/node.def b/templates/traffic-policy/shaper/node.tag/default/ceiling/node.def new file mode 100644 index 0000000..a0cc58b --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/ceiling/node.def @@ -0,0 +1,8 @@ +type: txt +help: Set the bandwidth limit for default traffic +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate $VAR(@)" +comp_help: Allowed values: + Limit in Kbps + %% Percentage of overall rate + Value with scaling suffix + bits per sec (kbit, mbit, gbit) diff --git a/templates/traffic-policy/shaper/node.tag/default/node.def b/templates/traffic-policy/shaper/node.tag/default/node.def new file mode 100644 index 0000000..de9cd5c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/node.def @@ -0,0 +1 @@ +help: Set default policy diff --git a/templates/traffic-policy/shaper/node.tag/default/priority/node.def b/templates/traffic-policy/shaper/node.tag/default/priority/node.def new file mode 100644 index 0000000..54f529b --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/priority/node.def @@ -0,0 +1,5 @@ +type: u32 +help: Set priority for usage of extra bandwidth +syntax:expression: $VAR(@) >= 0 && $VAR(@) < 8 ; "priority must be between 0 than 7" +comp_help: Priority for usage of excess bandwidth + <0-7> (default 0) diff --git a/templates/traffic-policy/shaper/node.tag/default/queue-limit/node.def b/templates/traffic-policy/shaper/node.tag/default/queue-limit/node.def new file mode 100644 index 0000000..49c47b4 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/queue-limit/node.def @@ -0,0 +1,2 @@ +type: u32 +help: Set maximum queue size (packets) diff --git a/templates/traffic-policy/shaper/node.tag/default/queue-type/node.def b/templates/traffic-policy/shaper/node.tag/default/queue-type/node.def new file mode 100644 index 0000000..295c04c --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/queue-type/node.def @@ -0,0 +1,10 @@ +type: txt +default: "fair-queue" +syntax:expression: $VAR(@) in "fair-queue", "priority", "drop-tail", "random-detect"; "Unknown queue-type" +help: Set the queue type for this class +comp_help:Possible completions + fair-queue\tStochastic Fair Queue (SFQ) + drop-tail\tFirst-In-First-Out (FIFO) + priority\tPriority queueing based on DSCP + random-detect\tRandom Early Detection (RED) + diff --git a/templates/traffic-policy/shaper/node.tag/default/set-dscp/node.def b/templates/traffic-policy/shaper/node.tag/default/set-dscp/node.def new file mode 100644 index 0000000..a469ae8 --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/default/set-dscp/node.def @@ -0,0 +1,18 @@ +type: txt +help: Change the Differentiated Services (DiffServ) field in the IP header +syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --dscp $VAR(@)" +allowed: awk ' + /^#/ { next } + { printf "%s ", $2 }' Differentiated Services Codepoint (DSCP) value + default set DSCP to (000000) + reliability set DSCP to (000001) + throughput set DSCP to (000010) + lowdelay set DSCP to (000100) + priority set DSCP to (001000) + immediate set DSCP to (010000) + flash set DSCP to (011000) + flash-override set DSCP to (100000) + critical set DSCP to (101000) + internet set DSCP to (110000) + network set DSCP to (111000) diff --git a/templates/traffic-policy/shaper/node.tag/description/node.def b/templates/traffic-policy/shaper/node.tag/description/node.def new file mode 100644 index 0000000..1e8e64f --- /dev/null +++ b/templates/traffic-policy/shaper/node.tag/description/node.def @@ -0,0 +1,2 @@ +type: txt +help: Set description for this queuing policy -- cgit v1.2.3 From ded90a0249827911e86c343ad67ae0d2074b6008 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 9 Jun 2010 10:45:46 -0700 Subject: Block attempts to mirror/redirect to self --- interface-templates/mirror/node.def | 3 +++ interface-templates/redirect/node.def | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/interface-templates/mirror/node.def b/interface-templates/mirror/node.def index cbb3bde..f19ae06 100644 --- a/interface-templates/mirror/node.def +++ b/interface-templates/mirror/node.def @@ -2,6 +2,9 @@ type: txt help: Set incoming packet mirroring destination allowed: ${vyatta_sbindir}/vyatta-interfaces.pl --skip=$IFNAME --show=all +syntax: $VAR(@) != $VAR(../@) ;\ + "interface $VAR(../@): mirroring to same interface not allowed" + syntax: /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$IFNAME --check=all commit:expression: $VAR(../redirect) == ""; \ diff --git a/interface-templates/redirect/node.def b/interface-templates/redirect/node.def index 6f0bd60..e94e8a8 100644 --- a/interface-templates/redirect/node.def +++ b/interface-templates/redirect/node.def @@ -2,7 +2,11 @@ type: txt help: Set incoming packet redirection destination allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --skip=$IFNAME --show=all +syntax: $VAR(@) != $VAR(../@) ;\ + "interface $VAR(../@): redirect to same interface not allowed" + syntax: /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$IFNAME --check=all + commit:expression: $VAR(../mirror) == "";\ "interface $VAR(../@) : can not redirect and mirror on $IFNAME" -- cgit v1.2.3