summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorErmal Luçi <eri@pfsense.org>2009-11-03 17:12:29 +0000
committerErmal Luçi <eri@pfsense.org>2009-11-03 17:12:29 +0000
commitf5881023b3e4e6c4b7e7beef3002ce0aeebeab82 (patch)
treeabc266cf6766d6357eae6ed47b0badafffb0ae03 /etc
parent154deb027831c5dbb0231b815dfb2d7068b5b885 (diff)
downloadpfsense-f5881023b3e4e6c4b7e7beef3002ce0aeebeab82.zip
pfsense-f5881023b3e4e6c4b7e7beef3002ce0aeebeab82.tar.gz
Be more strict on shaper checking and what is written to config. Clean up whitespace while here.
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/shaper.inc2481
1 files changed, 1345 insertions, 1136 deletions
diff --git a/etc/inc/shaper.inc b/etc/inc/shaper.inc
index 3a31806..65fabe5 100644
--- a/etc/inc/shaper.inc
+++ b/etc/inc/shaper.inc
@@ -1,34 +1,35 @@
<?php
/*
- Copyright (C) 2008 Ermal Luçi
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-
- pfSense_BUILDER_BINARIES: /bin/kill /sbin/kldload /bin/rm /bin/ps
- pfSense_MODULE: shaper
+ Copyright (C) 2008 Ermal Luçi
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ pfSense_BUILDER_BINARIES: /bin/kill /sbin/kldload /bin/rm /bin/ps
+ pfSense_MODULE: shaper
*/
-/* include all configuration functions */
+/* XXX: needs some reducing on include. */
+/* include all configuration functions. */
require_once("functions.inc");
/*
@@ -38,10 +39,10 @@ function &get_reference_to_me_in_config(&$mypath)
{
global $config;
- $ptr =& $config['shaper'];
+ $ptr =& $config['shaper'];
foreach ($mypath as $indeks) {
- $ptr =& $ptr['queue'][$indeks];
- }
+ $ptr =& $ptr['queue'][$indeks];
+ }
return $ptr;
}
@@ -50,10 +51,10 @@ function unset_object_by_reference(&$mypath)
{
global $config;
- $ptr =& $config['shaper'];
- for ($i = 0; $i < count($mypath) - 1; $i++) {
- $ptr =& $ptr['queue'][$mypath[$i]];
- }
+ $ptr =& $config['shaper'];
+ for ($i = 0; $i < count($mypath) - 1; $i++) {
+ $ptr =& $ptr['queue'][$mypath[$i]];
+ }
unset($ptr['queue'][$mypath[$i]]);
}
@@ -61,10 +62,10 @@ function &get_dn_reference_to_me_in_config(&$mypath)
{
global $config;
- $ptr =& $config['dnshaper'];
+ $ptr =& $config['dnshaper'];
foreach ($mypath as $indeks) {
- $ptr =& $ptr['queue'][$indeks];
- }
+ $ptr =& $ptr['queue'][$indeks];
+ }
return $ptr;
}
@@ -73,10 +74,10 @@ function unset_dn_object_by_reference(&$mypath)
{
global $config;
- $ptr =& $config['dnshaper'];
- for ($i = 0; $i < count($mypath) - 1; $i++) {
- $ptr =& $ptr['queue'][$mypath[$i]];
- }
+ $ptr =& $config['dnshaper'];
+ for ($i = 0; $i < count($mypath) - 1; $i++) {
+ $ptr =& $ptr['queue'][$mypath[$i]];
+ }
unset($ptr['queue'][$mypath[$i]]);
}
@@ -122,17 +123,17 @@ function get_bandwidthtype_scale($type)
switch ($type) {
case "Gb":
$factor = 1000 * 1000 * 1000;
- break;
+ break;
case "Mb":
$factor = 1000 * 1000;
- break;
+ break;
case "Kb":
$factor = 1000;
- break;
+ break;
case "b":
default:
$factor = 1;
- break;
+ break;
}
return floatval($factor);
}
@@ -169,7 +170,8 @@ function get_interface_bandwidth($object)
$bw_3 = $altq->GetBandwidth();
$bw_3 = $bw_3 * get_bandwidthtype_scale($altq->GetBwscale());
return floatval($bw_3);
- } else return 0;
+ } else
+ return 0;
}
/*
@@ -218,19 +220,19 @@ function cleanup_dnqueue_from_rules($queue)
}
class altq_root_queue {
- var $interface;
- var $tbrconfig ;
- var $bandwidth;
- var $bandwidthtype; /* b, Kb, Mb */
- var $scheduler;
- var $qlimit;
- var $queues = array();
- var $qenabled;
- var $link;
- var $default_present; /* if we have a default queue set */
- var $available_bw; /* in b/s */
-
- /* Accesor functions */
+ var $interface;
+ var $tbrconfig ;
+ var $bandwidth;
+ var $bandwidthtype; /* b, Kb, Mb */
+ var $scheduler;
+ var $qlimit;
+ var $queues = array();
+ var $qenabled = false;
+ var $link;
+ var $default_present; /* if we have a default queue set */
+ var $available_bw; /* in b/s */
+
+ /* Accesor functions */
function GetAvailableBandwidth() {
return $this->available_bw;
}
@@ -268,34 +270,34 @@ class altq_root_queue {
$this->interface = trim($name);
}
function GetInterface() {
- return $this->interface;
+ return $this->interface;
}
function SetInterface($name) {
- $this->interface = trim($name);
+ $this->interface = trim($name);
}
function GetTbrConfig() {
- return $this->tbrconfig;
+ return $this->tbrconfig;
}
function SetTbrConfig($tbrconfig) {
- $this->tbrconfig = $tbrconfig;
+ $this->tbrconfig = $tbrconfig;
}
function GetBandwidth() {
- return $this->bandwidth;
+ return $this->bandwidth;
}
function SetBandwidth($bw) {
- $this->bandwidth = $bw;
+ $this->bandwidth = $bw;
}
function GetBwscale() {
- return $this->bandwidthtype;
+ return $this->bandwidthtype;
}
function SetBwscale($bwscale) {
- $this->bandwidthtype = $bwscale;
+ $this->bandwidthtype = $bwscale;
}
function GetScheduler() {
- return $this->scheduler;
+ return $this->scheduler;
}
function SetScheduler($scheduler) {
- $this->scheduler = trim($scheduler);
+ $this->scheduler = trim($scheduler);
}
function GetQlimit() {
return $this->qlimit;
@@ -303,7 +305,7 @@ class altq_root_queue {
function SetQlimit($limit) {
$this->qlimit = $limit;
}
-
+
function validate_input($data, &$input_errors) {
$reqdfields[] = "bandwidth";
@@ -314,46 +316,45 @@ class altq_root_queue {
shaper_do_input_validation($data, $reqdfields, $reqdfieldsn, $input_errors);
if ($data['bandwidth'] && (!is_numeric($data['bandwidth'])))
- $input_errors[] = "Bandwidth must be an integer.";
+ $input_errors[] = "Bandwidth must be an integer.";
if ($data['bandwidth'] < 0)
- $input_errors[] = "Bandwidth cannot be negative.";
+ $input_errors[] = "Bandwidth cannot be negative.";
if ($data['qlimit'] && (!is_numeric($data['qlimit'])))
- $input_errors[] = "Qlimit must be an integer.";
+ $input_errors[] = "Qlimit must be an integer.";
if ($data['qlimit'] < 0)
- $input_errors[] = "Qlimit must be an positive.";
+ $input_errors[] = "Qlimit must be an positive.";
if ($data['tbrconfig'] && (!is_numeric($data['tbrconfig'])))
- $input_errors[] = "Tbrsize must be an integer.";
+ $input_errors[] = "Tbrsize must be an integer.";
if ($data['tbrconfig'] < 0)
- $input_errors[] = "Tbrsize must be an positive.";
+ $input_errors[] = "Tbrsize must be an positive.";
}
-
/* Implement this to shorten some code on the frontend page */
- function ReadConfig(&$conf) {
- if (isset($conf['tbrconfig']))
- $this->SetTbrConfig($conf['tbrconfig']);
- if ($conf['bandwidth'] <> "") {
- $this->SetBandwidth($conf['bandwidth']);
- if ($conf['bandwidthtype'] <> "")
- $this->SetBwscale($conf['bandwidthtype']);
- }
+ function ReadConfig(&$conf) {
+ if (isset($conf['tbrconfig']))
+ $this->SetTbrConfig($conf['tbrconfig']);
+ if ($conf['bandwidth'] <> "") {
+ $this->SetBandwidth($conf['bandwidth']);
+ if ($conf['bandwidthtype'] <> "")
+ $this->SetBwscale($conf['bandwidthtype']);
+ }
if (isset($conf['scheduler'])) {
- if ($this->GetScheduler() != $conf['scheduler']) {
- foreach ($this->queues as $q) {
- clean_child_queues($conf['scheduler'], $this->GetLink());
- $q->clean_queue($conf['scheduler']);
- }
+ if ($this->GetScheduler() != $conf['scheduler']) {
+ foreach ($this->queues as $q) {
+ clean_child_queues($conf['scheduler'], $this->GetLink());
+ $q->clean_queue($conf['scheduler']);
}
- $this->SetScheduler($conf['scheduler']);
}
+ $this->SetScheduler($conf['scheduler']);
+ }
if (isset($conf['qlimit']) && $conf['qlimit'] <> "")
$this->SetQlimit($conf['qlimit']);
if (isset($conf['name']))
$this->SetQname($conf['name']);
- $this->SetEnabled($conf['enabled']);
-
+ if (!empty($conf['enabled']) && $conf['enabled'] == "enabled")
+ $this->SetEnabled($conf['enabled']);
}
-
+
function copy_queue($interface, &$cflink) {
$cflink['interface'] = $interface;
$cflink['name'] = $interface;
@@ -372,88 +373,87 @@ class altq_root_queue {
}
}
+ function &get_queue_list($q = null) {
+ $qlist = array();
- function &get_queue_list($q = null) {
- $qlist = array();
-
- $qlist[$this->GetQname()] = & $this;
- if (is_array($this->queues)) {
- foreach ($this->queues as $queue)
- $queue->get_queue_list(&$qlist);
- }
- return $qlist;
+ $qlist[$this->GetQname()] = & $this;
+ if (is_array($this->queues)) {
+ foreach ($this->queues as $queue)
+ $queue->get_queue_list(&$qlist);
}
+ return $qlist;
+ }
- function &add_queue($interface, &$queue, &$path, &$input_errors) {
+ function &add_queue($interface, &$queue, &$path, &$input_errors) {
- if (!is_array($this->queues))
- $this->queues = array();
-
- switch ($this->GetScheduler()) {
- case "PRIQ":
- $q =& new priq_queue();
- break;
- case "HFSC":
- $q =& new hfsc_queue();
- break;
- case "CBQ":
- $q =& new cbq_queue();
- break;
- case "FAIRQ":
- $q =& new fairq_queue();
- break;
- default:
- /* XXX: but should not happen anyway */
- return;
- break;
- }
- $q->SetLink($path);
- $q->SetInterface($this->GetInterface());
- $q->SetEnabled("on");
- $q->SetParent(&$this);
- $q->ReadConfig($queue);
- $q->validate_input($queue, $input_errors);
- if (count($input_errors)) {
- return $q;
- }
-
- if (isset($queue['bandwidth'])) {
- switch ($queue['bandwidthtype']) {
- case "%":
- $myBw = $this->GetAvailableBandwidth() * $queue['bandwidth'] / 100;
- break;
- default:
- $myBw = $queue['bandwidth'] * get_bandwidthtype_scale($queue['bandwdithtype']);
- break;
- }
- }
- $q->SetAvailableBandwidth($myBw);
- $this->SetAvailableBandwidth($this->GetAvailableBandwidth() - $myBw);
- $this->queues[$q->GetQname()] = &$q;
- ref_on_altq_queue_list($this->GetQname(), $q->GetQname());
- if (is_array($queue['queue'])) {
- foreach ($queue['queue'] as $key1 => $que) {
- array_push($path, $key1);
- $q->add_queue($q->GetInterface(), &$que, &$path, $input_errors);
- array_pop($path);
- }
- }
-
+ if (!is_array($this->queues))
+ $this->queues = array();
+
+ switch ($this->GetScheduler()) {
+ case "PRIQ":
+ $q =& new priq_queue();
+ break;
+ case "HFSC":
+ $q =& new hfsc_queue();
+ break;
+ case "CBQ":
+ $q =& new cbq_queue();
+ break;
+ case "FAIRQ":
+ $q =& new fairq_queue();
+ break;
+ default:
+ /* XXX: but should not happen anyway */
+ return;
+ break;
+ }
+ $q->SetLink($path);
+ $q->SetInterface($this->GetInterface());
+ $q->SetEnabled("on");
+ $q->SetParent(&$this);
+ $q->ReadConfig($queue);
+ $q->validate_input($queue, $input_errors);
+ if (count($input_errors)) {
return $q;
}
- /* interface here might be optional */
- function &find_queue($interface, $qname) {
- if ($qname == $this->GetQname()) {
- return $this;
- }
- foreach ($this->queues as $q) {
- $result =& $q->find_queue("", $qname);
- if ($result)
- return $result;
+ if (isset($queue['bandwidth'])) {
+ switch ($queue['bandwidthtype']) {
+ case "%":
+ $myBw = $this->GetAvailableBandwidth() * $queue['bandwidth'] / 100;
+ break;
+ default:
+ $myBw = $queue['bandwidth'] * get_bandwidthtype_scale($queue['bandwdithtype']);
+ break;
+ }
+ }
+ $q->SetAvailableBandwidth($myBw);
+ $this->SetAvailableBandwidth($this->GetAvailableBandwidth() - $myBw);
+ $this->queues[$q->GetQname()] = &$q;
+ ref_on_altq_queue_list($this->GetQname(), $q->GetQname());
+ if (is_array($queue['queue'])) {
+ foreach ($queue['queue'] as $key1 => $que) {
+ array_push($path, $key1);
+ $q->add_queue($q->GetInterface(), &$que, &$path, $input_errors);
+ array_pop($path);
}
}
+ return $q;
+ }
+
+ /* interface here might be optional */
+ function &find_queue($interface, $qname) {
+ if ($qname == $this->GetQname()) {
+ return $this;
+ }
+ foreach ($this->queues as $q) {
+ $result =& $q->find_queue("", $qname);
+ if ($result)
+ return $result;
+ }
+ }
+
function &find_parentqueue($interface, $qname) {
if ($qname == $interface) {
$result = NULL;
@@ -514,27 +514,27 @@ class altq_root_queue {
if (count($this->queues) > 0 && $this->GetEnabled()) {
$rules = " altq on " . get_real_interface($this->GetInterface());
if ($this->GetScheduler())
- $rules .= " ".strtolower($this->GetScheduler());
+ $rules .= " ".strtolower($this->GetScheduler());
if ($this->GetBandwidth())
- $rules .= " bandwidth ".trim($this->GetBandwidth());
+ $rules .= " bandwidth ".trim($this->GetBandwidth());
if ($this->GetBwscale())
- $rules .= $this->GetBwscale();
+ $rules .= $this->GetBwscale();
if ($this->GetTbrConfig())
- $rules .= " tbrsize ".$this->GetTbrConfig();
+ $rules .= " tbrsize ".$this->GetTbrConfig();
if (count($this->queues)) {
- $i = count($this->queues);
- $rules .= " queue { ";
- foreach ($this->queues as $qkey => $qnone) {
- if ($i > 1) {
- $i--;
- $rules .= " {$qkey}, ";
- } else
- $rules .= " {$qkey} ";
- }
- $rules .= " } \n";
- foreach ($this->queues as $q) {
- $rules .= $q->build_rules();
- }
+ $i = count($this->queues);
+ $rules .= " queue { ";
+ foreach ($this->queues as $qkey => $qnone) {
+ if ($i > 1) {
+ $i--;
+ $rules .= " {$qkey}, ";
+ } else
+ $rules .= " {$qkey} ";
+ }
+ $rules .= " } \n";
+ foreach ($this->queues as $q) {
+ $rules .= $q->build_rules();
+ }
}
}
$rules .= " \n";
@@ -542,55 +542,54 @@ class altq_root_queue {
}
function build_javascript() {
- $javascript = "<script type=\"text/javascript\">";
- $javascript .= "function mySuspend() {";
- $javascript .= "if (document.layers && document.layers['shaperarea'] != null);";
- $javascript .= "document.layers['shaperarea'].visibility = 'hidden';";
- $javascript .= "else if (document.all)";
- $javascript .= "document.all['shaperarea'].style.visibility = 'hidden';";
- $javascript .= "}";
-
- $javascript .= "function myResume() {";
- $javascript .= "if (document.layers && document.layers['shaperarea'] != null)";
- $javascript .= "document.layers['shaperarea'].visibility = 'visible';";
- $javascript .= "else if (document.all)";
- $javascript .= "document.all['shaperarea'].style.visibility = 'visible';";
- $javascript .= "}";
- $javascript .= "</script>";
-
- return $javascript;
+ $javascript = "<script type=\"text/javascript\">";
+ $javascript .= "function mySuspend() {";
+ $javascript .= "if (document.layers && document.layers['shaperarea'] != null);";
+ $javascript .= "document.layers['shaperarea'].visibility = 'hidden';";
+ $javascript .= "else if (document.all)";
+ $javascript .= "document.all['shaperarea'].style.visibility = 'hidden';";
+ $javascript .= "}";
+
+ $javascript .= "function myResume() {";
+ $javascript .= "if (document.layers && document.layers['shaperarea'] != null)";
+ $javascript .= "document.layers['shaperarea'].visibility = 'visible';";
+ $javascript .= "else if (document.all)";
+ $javascript .= "document.all['shaperarea'].style.visibility = 'visible';";
+ $javascript .= "}";
+ $javascript .= "</script>";
+
+ return $javascript;
}
function build_shortform() {
- global $g;
-
- $altq =& $this;
- if ($altq)
- $scheduler = ": " . $altq->GetScheduler();
- $form = "<tr><td width=\"20%\" class=\"vtable\">";
- $form .= "<a href=\"firewall_shaper.php?interface" . $this->GetInterface() . "&queue=". $this->GetInterface()."&action=show\">".$this->GetInterface().": ".$scheduler."</a>";
- $form .= "</td></tr>";
- $form .= "<tr>";
- $form .= "<td width=\"50%\" class=\"vncellreq\">";
- $form .= "Bandwidth: " . $this->GetBandwidth().$this->GetBwscale();
- $form .= "</td><td width=\"50%\"></td></tr>";
- $form .= "<tr><td width=\"20%\" class=\"vncellreq\">";
- $form .= "<a href=\"firewall_shaper_queues.php?interface=";
- $form .= $this->GetInterface() . "&queue=";
- $form .= $this->GetQname() . "&action=delete\">";
- $form .= "<img src=\"";
- $form .= "./themes/".$g['theme']."/images/icons/icon_x.gif\"";
- $form .= " width=\"17\" height=\"17\" border=\"0\" title=\"Disable shaper on i
-nterface\">";
- $form .= "<span>Disable shaper on interface</span></a></td></tr>";
-
- return $form;
+ global $g;
+
+ $altq =& $this;
+ if ($altq)
+ $scheduler = ": " . $altq->GetScheduler();
+ $form = "<tr><td width=\"20%\" class=\"vtable\">";
+ $form .= "<a href=\"firewall_shaper.php?interface" . $this->GetInterface() . "&queue=". $this->GetInterface()."&action=show\">".$this->GetInterface().": ".$scheduler."</a>";
+ $form .= "</td></tr>";
+ $form .= "<tr>";
+ $form .= "<td width=\"50%\" class=\"vncellreq\">";
+ $form .= "Bandwidth: " . $this->GetBandwidth().$this->GetBwscale();
+ $form .= "</td><td width=\"50%\"></td></tr>";
+ $form .= "<tr><td width=\"20%\" class=\"vncellreq\">";
+ $form .= "<a href=\"firewall_shaper_queues.php?interface=";
+ $form .= $this->GetInterface() . "&queue=";
+ $form .= $this->GetQname() . "&action=delete\">";
+ $form .= "<img src=\"";
+ $form .= "./themes/".$g['theme']."/images/icons/icon_x.gif\"";
+ $form .= " width=\"17\" height=\"17\" border=\"0\" title=\"Disable shaper on interface\">";
+ $form .= "<span>Disable shaper on interface</span></a></td></tr>";
+
+ return $form;
}
- /*
- * For requesting the parameters of the root queue
- * to the user like the traffic wizard does.
- */
+ /*
+ * For requesting the parameters of the root queue
+ * to the user like the traffic wizard does.
+ */
function build_form() {
$form = "<tr><td valign=\"top\" class=\"vncellreq\"><br><span class=\"vexpl\">Name</span></td>";
$form .= "<td class=\"vncellreq\">";
@@ -660,7 +659,7 @@ nterface\">";
$form .= "Adjusts the size, in bytes, of the token bucket regulator.";
$form .= "If not specified, heuristics based on the interface ";
$form .= "bandwidth are used to determine the size.";
- $form .= "</span></td></tr>";
+ $form .= "</span></td></tr>";
$form .= "<input type=\"hidden\" id=\"interface\" name=\"interface\"";
$form .= " value=\"" . $this->GetInterface() . "\">";
$form .= "<input type=\"hidden\" id=\"name\" name=\"name\" value=\"".$this->GetQname()."\" >";
@@ -669,7 +668,7 @@ nterface\">";
return $form;
}
- function update_altq_queue_data(&$data) {
+ function update_altq_queue_data(&$data) {
$this->ReadConfig($data);
}
@@ -686,9 +685,15 @@ nterface\">";
$cflink['scheduler'] = $this->GetScheduler();
$cflink['bandwidth'] = $this->GetBandwidth();
$cflink['bandwidthtype'] = $this->GetBwscale();
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['tbrconfig'] = $this->GetTbrConfig();
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($cflink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['tbrconfig'] = trim($this->GetTbrConfig());
+ if (empty($cflink['tbrconfig']))
+ unset($cflink['tbrconfig']);
$cflink['enabled'] = $this->GetEnabled();
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
}
}
@@ -702,12 +707,12 @@ class priq_queue {
var $isparent;
var $qbandwidth;
var $qbandwidthtype;
- var $qdefault;
- var $qrio;
- var $qred;
- var $qecn;
+ var $qdefault = "";
+ var $qrio = "";
+ var $qred = "";
+ var $qecn = "";
var $qack;
- var $qenabled;
+ var $qenabled = "";
var $qparent;
var $link;
var $available_bw; /* in b/s */
@@ -723,10 +728,10 @@ class priq_queue {
$this->available_bw = $bw;
}
function SetLink($link) {
- $this->link = $link;
+ $this->link = $link;
}
function GetLink() {
- return $this->link;
+ return $this->link;
}
function &GetParent() {
return $this->qparent;
@@ -735,95 +740,95 @@ class priq_queue {
$this->qparent = &$parent;
}
function GetEnabled() {
- return $this->qenabled;
+ return $this->qenabled;
}
function SetEnabled($value) {
- $this->qenabled = $value;
+ $this->qenabled = $value;
}
function CanHaveChildren() {
- return false;
+ return false;
}
function CanBeDeleted() {
- return true;
+ return true;
}
function GetQname() {
- return $this->qname;
+ return $this->qname;
}
function SetQname($name) {
- $this->qname = trim($name);
+ $this->qname = trim($name);
}
function GetBandwidth() {
- return $this->qbandwidth;
+ return $this->qbandwidth;
}
function SetBandwidth($bandwidth) {
- $this->qbandwidth = $bandwidth;
+ $this->qbandwidth = $bandwidth;
}
function GetInterface() {
- return $this->qinterface;
+ return $this->qinterface;
}
function SetInterface($name) {
- $this->qinterface = trim($name);
+ $this->qinterface = trim($name);
}
function GetQlimit() {
- return $this->qlimit;
+ return $this->qlimit;
}
function SetQlimit($limit) {
- $this->qlimit = $limit;
+ $this->qlimit = $limit;
}
function GetQpriority() {
- return $this->qpriority;
+ return $this->qpriority;
}
function SetQpriority($priority) {
- $this->qpriority = $priority;
+ $this->qpriority = $priority;
}
function GetDescription() {
- return $this->description;
+ return $this->description;
}
function SetDescription($str) {
- $this->description = trim($str);
+ $this->description = trim($str);
}
function GetFirstime() {
- return $this->firsttime;
+ return $this->firsttime;
}
function SetFirsttime($number) {
- $this->firsttime = $number;
+ $this->firsttime = $number;
}
function GetBwscale() {
- return $this->qbandwidthtype;
+ return $this->qbandwidthtype;
}
function SetBwscale($scale) {
- $this->qbandwidthtype = $scale;
+ $this->qbandwidthtype = $scale;
}
function GetDefault() {
- return $this->qdefault;
+ return $this->qdefault;
}
function SetDefault($value = false) {
- $this->qdefault = $value;
- altq_set_default_queue($this->GetInterface(), "true");
+ $this->qdefault = $value;
+ altq_set_default_queue($this->GetInterface(), "true");
}
function GetRed() {
- return $this->qred;
+ return $this->qred;
}
function SetRed($red = false) {
- $this->qred = $red;
+ $this->qred = $red;
}
function GetRio() {
- return $this->qrio;
+ return $this->qrio;
}
function SetRio($rio = false) {
- $this->qrio = $rio;
+ $this->qrio = $rio;
}
-function GetEcn() {
- return $this->qecn;
+ function GetEcn() {
+ return $this->qecn;
}
function SetEcn($ecn = false) {
- $this->qecn = $ecn;
+ $this->qecn = $ecn;
}
function GetAck() {
- return $this->qack;
+ return $this->qack;
}
function SetAck($ack = false) {
- $this->qack = $ack;
+ $this->qack = $ack;
}
function build_javascript() {
@@ -878,20 +883,18 @@ function GetEcn() {
function clean_queue($sched) {
clean_child_queues($sched, $this->GetLink());
if (is_array($this->subqueues)) {
- foreach ($this->subqueues as $q)
- $q->clean_queue($sched);
- }
+ foreach ($this->subqueues as $q)
+ $q->clean_queue($sched);
}
+ }
-
-
function &get_queue_list(&$qlist) {
- $qlist[$this->GetQname()] = & $this;
- if (is_array($this->subqueues)) {
- foreach ($this->subqueues as $queue)
- $queue->get_queue_list($qlist);
- }
- }
+ $qlist[$this->GetQname()] = & $this;
+ if (is_array($this->subqueues)) {
+ foreach ($this->subqueues as $queue)
+ $queue->get_queue_list($qlist);
+ }
+ }
function delete_queue() {
unref_on_altq_queue_list($this->GetQname());
@@ -948,147 +951,163 @@ function GetEcn() {
if ($q['bandwidthtype'] <> "")
$this->SetBwscale($q['bandwidthtype']);
}
- if (isset($q['qlimit']) && $q['qlimit'] <> "")
- $this->SetQlimit($q['qlimit']);
- if (isset($q['priority']))
- $this->SetQPriority($q['priority']);
- if (isset($q['description']) && $q['description'] != "")
- $this->SetDescription($q['description']);
- $this->SetRed($q['red']);
- $this->SetRio($q['rio']);
- $this->SetEcn($q['ecn']);
- $this->SetDefault($q['default']);
- $this->SetEnabled($q['enabled']);
+ if (!empty($q['qlimit']))
+ $this->SetQlimit($q['qlimit']);
+ if (!empty($q['priority']))
+ $this->SetQPriority($q['priority']);
+ if (!empty($q['description']))
+ $this->SetDescription($q['description']);
+ if (!empty($q['red']) && $q['red'] == "red")
+ $this->SetRed($q['red']);
+ if (!empty($q['rio']) && $q['rio'] == "rio")
+ $this->SetRio($q['rio']);
+ if (!empty($q['ecn']) && $q['ecn'] == "ecn")
+ $this->SetEcn($q['ecn']);
+ if (!empty($q['default']) && $q['default'] == "default")
+ $this->SetDefault($q['default']);
+ if (!empty($q['enabled']) && $q['enabled'] == "enabled")
+ $this->SetEnabled($q['enabled']);
- }
+ }
function build_tree() {
- $tree = " <li><a href=\"firewall_shaper.php?interface=". $this->GetInterface()."&queue=". $this->GetQname()."&action=show";
- $tree .= "\" ";
- if ($this->GetDefault())
- $tree .= " class=\"navlnk\"";
- $tree .= " >" . $this->GetQname() . "</a>";
- /*
- * Not needed here!
- * if (is_array($queues) {
- * $tree .= "<ul>";
- * foreach ($q as $queues)
- * $tree .= $queues['$q->GetName()']->build_tree();
- * endforeach
- * $tree .= "</ul>";
- * }
- */
-
- $tree .= "</li>";
-
- return $tree;
- }
-
- /* Should return something like:
- * queue $qname on $qinterface bandwidth ....
+ $tree = " <li><a href=\"firewall_shaper.php?interface=". $this->GetInterface()."&queue=". $this->GetQname()."&action=show";
+ $tree .= "\" ";
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue))
+ $tree .= " class=\"navlnk\"";
+ $tree .= " >" . $this->GetQname() . "</a>";
+ /*
+ * Not needed here!
+ * if (is_array($queues) {
+ * $tree .= "<ul>";
+ * foreach ($q as $queues)
+ * $tree .= $queues['$q->GetName()']->build_tree();
+ * endforeach
+ * $tree .= "</ul>";
+ * }
*/
- function build_rules() {
- $pfq_rule = " queue ". $this->qname;
- if ($this->GetInterface())
- $pfq_rule .= " on ".get_real_interface($this->GetInterface());
- if ($this->GetQpriority())
- $pfq_rule .= " priority ".$this->GetQpriority();
- if ($this->GetQlimit())
- $pfq_rule .= " qlimit " . $this->GetQlimit();
- if ($this->GetRed() || $this->GetRio() || $this->GetEcn() || $this->GetDefault()) {
- $pfq_rule .= " priq ( ";
- if ($this->GetRed()) {
- $comma = 1;
- $pfq_rule .= " red ";
- }
- if ($this->GetRio()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " rio ";
- }
- if ($this->GetEcn()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " ecn ";
- }
- if ($this->GetDefault()) {
- if ($comma)
- $pfq_rule .= " ,";
- $pfq_rule .= " default ";
- }
- $pfq_rule .= " ) ";
- }
-
- $pfq_rule .= " \n";
+
+ $tree .= "</li>";
+
+ return $tree;
+ }
- return $pfq_rule;
+ /* Should return something like:
+ * queue $qname on $qinterface bandwidth ....
+ */
+ function build_rules() {
+ $pfq_rule = " queue ". $this->qname;
+ if ($this->GetInterface())
+ $pfq_rule .= " on ".get_real_interface($this->GetInterface());
+ $tmpvalue = $this->GetQpriority();
+ if (!empty($tmpvalue))
+ $pfq_rule .= " priority ".$this->GetQpriority();
+ $tmpvalue = $this->GetQlimit();
+ if (!empty($tmpvalue))
+ $pfq_rule .= " qlimit " . $this->GetQlimit();
+ if ($this->GetRed() || $this->GetRio() || $this->GetEcn() || $this->GetDefault()) {
+ $pfq_rule .= " priq ( ";
+ $tmpvalue = $this->GetRed();
+ if (!empty($tmpvalue)) {
+ $comma = 1;
+ $pfq_rule .= " red ";
+ }
+ $tmpvalue = $this->GetRio();
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " rio ";
+ }
+ $tmpvalue = $this->GetEcn();
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " ecn ";
+ }
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $pfq_rule .= " default ";
+ }
+ $pfq_rule .= " ) ";
}
- /*
- * To return the html form to show to user
- * for getting the parameters.
- * Should do even for first time when the
- * object is created and later when we may
- * need to update it.
- */
- function build_form() {
- $form .= "<tr>";
+ $pfq_rule .= " \n";
+
+ return $pfq_rule;
+ }
+
+ /*
+ * To return the html form to show to user
+ * for getting the parameters.
+ * Should do even for first time when the
+ * object is created and later when we may
+ * need to update it.
+ */
+ function build_form() {
+ $form .= "<tr>";
$form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">";
$form .= "Queue Name</td><td width=\"78%\" class=\"vtable\">";
$form .= "<input name=\"name\" type=\"text\" id=\"name\" class=\"formfld unknown\" size=\"15\" maxlength=\"15\" value=\"";
$form .= htmlspecialchars($this->GetQname());
$form .= "\">";
- $form .= "<br> <span class=\"vexpl\">Enter the name of the queue here. Do not use spaces and limit the size to 15 characters.";
- $form .= "</span></td>";
+ $form .= "<br> <span class=\"vexpl\">Enter the name of the queue here. Do not use spaces and limit the size to 15 characters.";
+ $form .= "</span></td>";
$form .= "</tr><tr>";
- $form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">Priority</td>";
- $form .= "<td width=\"78%\" class=\"vtable\"> <input name=\"priority\" type=\"text\" id=\"priority\" size=\"5\" value=\"";
- $form .= htmlspecialchars($this->GetQpriority());
- $form .= "\">";
- $form .= "<br> <span class=\"vexpl\">For hfsc, the range is 0 to 7. The default is 1. Hfsc queues with a higher priority are preferred in the case of overload.</span></td>";
- $form .= "</tr>";
- $form .= "</tr>";
- $form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">Queue limit</td>";
- $form .= "<td width=\"78%\" class=\"vtable\"> <input name=\"qlimit\" type=\"text\" id=\"qlimit\" size=\"5\" value=\"";
- $form .= htmlspecialchars($this->GetQlimit());
- $form .= "\">";
+ $form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">Priority</td>";
+ $form .= "<td width=\"78%\" class=\"vtable\"> <input name=\"priority\" type=\"text\" id=\"priority\" size=\"5\" value=\"";
+ $form .= htmlspecialchars($this->GetQpriority());
+ $form .= "\">";
+ $form .= "<br> <span class=\"vexpl\">For hfsc, the range is 0 to 7. The default is 1. Hfsc queues with a higher priority are preferred in the case of overload.</span></td>";
+ $form .= "</tr>";
+ $form .= "</tr>";
+ $form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">Queue limit</td>";
+ $form .= "<td width=\"78%\" class=\"vtable\"> <input name=\"qlimit\" type=\"text\" id=\"qlimit\" size=\"5\" value=\"";
+ $form .= htmlspecialchars($this->GetQlimit());
+ $form .= "\">";
$form .= "<br> <span class=\"vexpl\">Queue limit in packets per second.";
- $form .= "</span></td>";
- $form .= "<tr>";
- $form .= "<td width=\"22%\" valign=\"top\" class=\"vncell\">Scheduler options</td>";
- $form .= "<td width=\"78%\" class=\"vtable\">";
- if ($this->GetDefault()) {
- $form .= "<input type=\"checkbox\" id=\"default\" CHECKED name=\"default\"";
- $form .= "> Default queue<br>";
+ $form .= "</span></td>";
+ $form .= "<tr>";
+ $form .= "<td width=\"22%\" valign=\"top\" class=\"vncell\">Scheduler options</td>";
+ $form .= "<td width=\"78%\" class=\"vtable\">";
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue)) {
+ $form .= "<input type=\"checkbox\" id=\"default\" CHECKED name=\"default\" value=\"default\"";
+ $form .= "> Default queue<br>";
} else {
- $form .= "<input type=\"checkbox\" id=\"default\" name=\"default\"";
- $form .= "> Default queue<br>";
+ $form .= "<input type=\"checkbox\" id=\"default\" name=\"default\" value=\"default\"";
+ $form .= "> Default queue<br>";
}
- $form .= "<input type=\"checkbox\" id=\"red\" name=\"red\"";
- if($this->GetRed())
+ $form .= "<input type=\"checkbox\" id=\"red\" name=\"red\" value=\"red\" ";
+ $tmpvalue = $this->GetRed();
+ if(!empty($tmpvalue))
$form .= " CHECKED";
$form .= "> <a target=\"_new\" href=\"http://www.openbsd.org/faq/pf/queueing.html#red\">Random Early Detection</a><br>";
- $form .= "<input type=\"checkbox\" id=\"rio\" name=\"rio\"";
- if($this->GetRio())
+ $form .= "<input type=\"checkbox\" id=\"rio\" name=\"rio\" value=\"rio\"";
+ $tmpvalue = $this->GetRio();
+ if(!empty($tmpvalue))
$form .= " CHECKED";
$form .= "> <a target=\"_new\" href=\"http://www.openbsd.org/faq/pf/queueing.html#rio\">Random Early Detection In and Out</a><br>";
- $form .= "<input type=\"checkbox\" id=\"ecn\" name=\"ecn\"";
- if($this->GetEcn())
+ $form .= "<input type=\"checkbox\" id=\"ecn\" name=\"ecn\" value=\"ecn\"";
+ $tmpvalue = $this->GetEcn();
+ if(!empty($tmpvalue))
$form .= " CHECKED";
$form .= "> <a target=\"_new\" href=\"http://www.openbsd.org/faq/pf/queueing.html#ecn\">Explicit Congestion Notification</a><br>";
- $form .= "<span class=\"vexpl\"><br>Select options for this queue";
- $form .= "</tr><tr>";
+ $form .= "<span class=\"vexpl\"><br>Select options for this queue";
+ $form .= "</tr><tr>";
$form .= "<td width=\"22%\" class=\"vncellreq\">Description</td>";
$form .= "<td width=\"78%\" class=\"vtable\">";
$form .= "<input type=\"text\" name=\"description\" size=\"50%\" class=\"formfld unknown\" value=\"" . $this->GetDescription() . "\" >";
$form .= "</td></tr>";
$form .= "<input type=\"hidden\" name=\"interface\" id=\"interface\"";
- $form .= " value=\"".$this->GetInterface()."\">";
+ $form .= " value=\"".$this->GetInterface()."\">";
return $form;
- }
+ }
function build_shortform() {
/* XXX: Hacks in site. Mostly layer violations! */
@@ -1097,7 +1116,7 @@ function GetEcn() {
$altq =& $altq_list_queues[$this->GetInterface()];
if ($altq)
$scheduler = ": " . $altq->GetScheduler();
- $form = "<tr><td width=\"20%\" class=\"vtable\">";
+ $form = "<tr><td width=\"20%\" class=\"vtable\">";
$form .= "<a href=\"firewall_shaper.php?interface" . $this->GetInterface() . "&queue=" . $this->GetInterface()."&action=show\">".$this->GetInterface().": ".$scheduler."</a>";
$form .= "</td></tr>";
/*
@@ -1109,18 +1128,20 @@ function GetEcn() {
$form .= "Bandwidth: " . $this->GetBandwidth().$this->GetBwscale();
$form .= "</td><td width=\"50%\"></td></tr>";
$form .= "<tr><td width=\"20%\" class=\"vncellreq\">";
- if ($this->GetQpriority())
+ $tmpvalue = $this->GetQpriority();
+ if (!empty($tmpvalue))
$form .= "Priority: on </td></tr>";
- if ($this->GetDefault())
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue))
$form .= "<tr><td class=\"vncellreq\">Default: on </td></tr>";
$form .= "<tr><td width=\"20%\" class=\"vncellreq\">";
$form .= "<a href=\"firewall_shaper_queues.php?interface=";
- $form .= $this->GetInterface() . "&queue=";
- $form .= $this->GetQname() . "&action=delete\">";
- $form .= "<img src=\"";
- $form .= "./themes/".$g['theme']."/images/icons/icon_x.gif\"";
- $form .= " width=\"17\" height=\"17\" border=\"0\" title=\"Delete queue from interface\">";
- $form .= "<span>Delete queue from interface</span></a></td></tr>";
+ $form .= $this->GetInterface() . "&queue=";
+ $form .= $this->GetQname() . "&action=delete\">";
+ $form .= "<img src=\"";
+ $form .= "./themes/".$g['theme']."/images/icons/icon_x.gif\"";
+ $form .= " width=\"17\" height=\"17\" border=\"0\" title=\"Delete queue from interface\">";
+ $form .= "<span>Delete queue from interface</span></a></td></tr>";
return $form;
@@ -1130,264 +1151,315 @@ function GetEcn() {
$this->ReadConfig($q);
}
- function wconfig() {
- $cflink =& get_reference_to_me_in_config($this->GetLink());
+ function wconfig() {
+ $cflink =& get_reference_to_me_in_config($this->GetLink());
if (!is_array($cflink))
$cflink = array();
$cflink['name'] = $this->GetQname();
- $cflink['interface'] = $this->GetInterface();
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['priority'] = $this->GetQpriority();
- $cflink['description'] = $this->GetDescription();
- $cflink['enabled'] = $this->GetEnabled();
- $cflink['default'] = $this->GetDefault();
- $cflink['red'] = $this->GetRed();
- $cflink['rio'] = $this->GetRio();
- $cflink['ecn'] = $this->GetEcn();
+ $cflink['interface'] = $this->GetInterface();
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($cflink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['priority'] = trim($this->GetQpriority());
+ if (empty($cflink['priority']))
+ unset($cflink['priority']);
+ $cflink['description'] = trim($this->GetDescription());
+ if (empty($cflink['description']))
+ unset($cflink['description']);
+ $cflink['enabled'] = trim($this->GetEnabled());
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
+ $cflink['default'] = trim($this->GetDefault());
+ if (empty($cflink['default']))
+ unset($cflink['default']);
+ $cflink['red'] = trim($this->GetRed());
+ if (empty($cflink['red']))
+ unset($cflink['red']);
+ $cflink['rio'] = trim($this->GetRio());
+ if (empty($cflink['rio']))
+ unset($cflink['rio']);
+ $cflink['ecn'] = trim($this->GetEcn());
+ if (empty($cflink['ecn']))
+ unset($cflink['ecn']);
}
}
class hfsc_queue extends priq_queue {
- /* realtime */
+ /* realtime */
var $realtime;
- var $r_m1;
- var $r_d;
- var $r_m2;
- /* linkshare */
+ var $r_m1;
+ var $r_d;
+ var $r_m2;
+ /* linkshare */
var $linkshare;
- var $l_m1;
- var $l_d;
- var $l_m2;
- /* upperlimit */
+ var $l_m1;
+ var $l_d;
+ var $l_m2;
+ /* upperlimit */
var $upperlimit;
- var $u_m1;
- var $u_d;
- var $u_m2;
+ var $u_m1;
+ var $u_d;
+ var $u_m2;
- /*
- * HFSC can have nested queues.
- */
+ /*
+ * HFSC can have nested queues.
+ */
function CanHaveChildren() {
- return true;
- }
+ return true;
+ }
function GetRealtime() {
return $this->realtime;
- }
- function GetR_m1() {
- return $this->r_m1;
- }
- function GetR_d() {
- return $this->r_d;
- }
- function GetR_m2() {
- return $this->r_m2;
- }
- function SetRealtime() {
- $this->realtime = "on";
- }
- function DisableRealtime() {
- $this->realtime = "";
- }
- function SetR_m1($value) {
- $this->r_m1 = $value;
- }
- function SetR_d($value) {
- $this->r_d = $value;
- }
- function SetR_m2($value) {
- $this->r_m2 = $value;
- }
- function GetLinkshare() {
- return $this->linkshare;
- }
- function DisableLinkshare() {
- $this->linkshare = "";
- }
- function GetL_m1() {
- return $this->l_m1;
- }
- function GetL_d() {
- return $this->l_d;
- }
- function GetL_m2() {
- return $this->l_m2;
- }
- function SetLinkshare() {
- $this->linkshare = "on";
- }
- function SetL_m1($value) {
- $this->l_m1 = $value;
- }
- function SetL_d($value) {
- $this->l_d = $value;
- }
- function SetL_m2($value) {
- $this->l_m2 = $value;
- }
- function GetUpperlimit() {
- return $this->upperlimit;
- }
- function GetU_m1() {
- return $this->u_m1;
- }
- function GetU_d() {
- return $this->u_d;
- }
- function GetU_m2() {
- return $this->u_m2;
- }
- function SetUpperlimit() {
- $this->upperlimit = "on";
- }
- function DisableUpperlimit() {
- $this->upperlimit = "";
- }
- function SetU_m1($value) {
- $this->u_m1 = $value;
- }
- function SetU_d($value) {
- $this->u_d = $value;
- }
- function SetU_m2($value) {
- $this->u_m2 = $value;
- }
-
-
-
- function &add_queue($interface, &$qname, &$path, &$input_errors) {
-
- if (!is_array($this->subqueues))
- $this->subqueues = array();
- $q =& new hfsc_queue();
- $q->SetInterface($this->GetInterface());
- $q->SetParent(&$this);
- $q->ReadConfig($qname);
- $q->validate_input($qname, $input_errors);
- if (count($input_errors)) {
- return $q;
- }
-
- $q->SetEnabled("on");
- $q->SetLink($path);
- switch ($q->GetBwscale()) {
- case "%":
- $myBw = $this->GetAvailableBandwidth() * $qname['bandwidth'] / 100;
- break;
- default:
- $myBw = $qname['bandwidth'] * get_bandwidthtype_scale($q->GetBwscale());
- break;
- }
- $q->SetAvailableBandwidth($myBw);
- $this->SetAvailableBandwidth($this->GetAvailableBandwidth() - $myBw);
-
- $this->subqueues[$q->GetQname()] =& $q; //new hfsc_queue()
- ref_on_altq_queue_list($this->GetQname(), $q->GetQname());
- if (is_array($qname['queue'])) {
- foreach ($qname['queue'] as $key1 => $que) {
- array_push($path, $key1);
- $q->add_queue($q->GetInterface(), &$que, &$path, $input_errors);
- array_pop($path);
- }
- }
-
+ }
+ function GetR_m1() {
+ return $this->r_m1;
+ }
+ function GetR_d() {
+ return $this->r_d;
+ }
+ function GetR_m2() {
+ return $this->r_m2;
+ }
+ function SetRealtime() {
+ $this->realtime = "on";
+ }
+ function DisableRealtime() {
+ $this->realtime = "";
+ }
+ function SetR_m1($value) {
+ $this->r_m1 = $value;
+ }
+ function SetR_d($value) {
+ $this->r_d = $value;
+ }
+ function SetR_m2($value) {
+ $this->r_m2 = $value;
+ }
+ function GetLinkshare() {
+ return $this->linkshare;
+ }
+ function DisableLinkshare() {
+ $this->linkshare = "";
+ }
+ function GetL_m1() {
+ return $this->l_m1;
+ }
+ function GetL_d() {
+ return $this->l_d;
+ }
+ function GetL_m2() {
+ return $this->l_m2;
+ }
+ function SetLinkshare() {
+ $this->linkshare = "on";
+ }
+ function SetL_m1($value) {
+ $this->l_m1 = $value;
+ }
+ function SetL_d($value) {
+ $this->l_d = $value;
+ }
+ function SetL_m2($value) {
+ $this->l_m2 = $value;
+ }
+ function GetUpperlimit() {
+ return $this->upperlimit;
+ }
+ function GetU_m1() {
+ return $this->u_m1;
+ }
+ function GetU_d() {
+ return $this->u_d;
+ }
+ function GetU_m2() {
+ return $this->u_m2;
+ }
+ function SetUpperlimit() {
+ $this->upperlimit = "on";
+ }
+ function DisableUpperlimit() {
+ $this->upperlimit = "";
+ }
+ function SetU_m1($value) {
+ $this->u_m1 = $value;
+ }
+ function SetU_d($value) {
+ $this->u_d = $value;
+ }
+ function SetU_m2($value) {
+ $this->u_m2 = $value;
+ }
+
+ function &add_queue($interface, &$qname, &$path, &$input_errors) {
+
+ if (!is_array($this->subqueues))
+ $this->subqueues = array();
+ $q =& new hfsc_queue();
+ $q->SetInterface($this->GetInterface());
+ $q->SetParent(&$this);
+ $q->ReadConfig($qname);
+ $q->validate_input($qname, $input_errors);
+ if (count($input_errors)) {
return $q;
}
- function copy_queue($interface, &$cflink) {
-
- $cflink['name'] = $this->GetQname();
- $cflink['interface'] = $interface;
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['priority'] = $this->GetQpriority();
- $cflink['description'] = $this->GetDescription();
- $cflink['bandwidth'] = $this->GetBandwidth();
- $cflink['bandwidthtype'] = $this->GetBwscale();
- $cflink['enabled'] = $this->GetEnabled();
- $cflink['default'] = $this->GetDefault();
- $cflink['red'] = $this->GetRed();
- $cflink['rio'] = $this->GetRio();
- $cflink['ecn'] = $this->GetEcn();
- if ($this->GetLinkshare() <> "") {
- if ($this->GetL_m1() <> "") {
- $cflink['linkshare1'] = $this->GetL_m1();
- $cflink['linkshare2'] = $this->GetL_d();
- $cflink['linkshare'] = "on";
- }
- if ($this->GetL_m2() <> "") {
- $cflink['linkshare3'] = $this->GetL_m2();
- $cflink['linkshare'] = "on";
- }
- } else $cflink['linkshare'] = "";
- if ($this->GetRealtime() <> "") {
- if ($this->GetR_m1() <> "") {
- $cflink['realtime1'] = $this->GetR_m1();
- $cflink['realtime2'] = $this->GetR_d();
- $cflink['realtime'] = "on";
- }
- if ($this->GetR_m2() <> "") {
- $cflink['realtime3'] = $this->GetR_m2();
- $cflink['realtime'] = "on";
- }
- } else $cflink['realtime'] = "";
- if ($this->GetUpperlimit() <> "") {
- if ($this->GetU_m1() <> "") {
- $cflink['upperlimit1'] = $this->GetU_m1();
- $cflink['upperlimit2'] = $this->GetU_d();
- $cflink['upperlimit'] = "on";
- }
- if ($this->GetU_m2() <> "") {
- $cflink['upperlimit3'] = $this->GetU_m2();
- $cflink['upperlimit'] = "on";
- }
- } else $cflink['upperlimit'] = "";
-
- if (is_array($this->subqueues)) {
- $cflinkp['queue'] = array();
- foreach ($this->subqueues as $q) {
- $cflink['queue'][$q->GetQname()] = array();
- $q->copy_queue($interface, &$cflink['queue'][$q->GetQname()]);
- }
- }
+ $q->SetEnabled("on");
+ $q->SetLink($path);
+ switch ($q->GetBwscale()) {
+ case "%":
+ $myBw = $this->GetAvailableBandwidth() * $qname['bandwidth'] / 100;
+ break;
+ default:
+ $myBw = $qname['bandwidth'] * get_bandwidthtype_scale($q->GetBwscale());
+ break;
+ }
+ $q->SetAvailableBandwidth($myBw);
+ $this->SetAvailableBandwidth($this->GetAvailableBandwidth() - $myBw);
+
+ $this->subqueues[$q->GetQname()] =& $q; //new hfsc_queue()
+ ref_on_altq_queue_list($this->GetQname(), $q->GetQname());
+ if (is_array($qname['queue'])) {
+ foreach ($qname['queue'] as $key1 => $que) {
+ array_push($path, $key1);
+ $q->add_queue($q->GetInterface(), &$que, &$path, $input_errors);
+ array_pop($path);
+ }
+ }
+
+ return $q;
+ }
- }
+ function copy_queue($interface, &$cflink) {
- function delete_queue() {
- unref_on_altq_queue_list($this->GetQname());
- if ($this->GetDefault())
- altq_set_default_queue($this->GetInterface(), "false");
- cleanup_queue_from_rules($this->GetQname());
- $parent =& $this->GetParent();
- foreach ($this->subqueues as $q) {
- $this->SetAvailableBandwidth($this->GetAvailableBandwidth() + $q->GetAvailableBandwidth());
- $q->delete_queue();
+ $cflink['name'] = $this->GetQname();
+ $cflink['interface'] = $interface;
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($cflink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['priority'] = trim($this->GetQpriority());
+ if (empty($cflink['priority']))
+ unset($cflink['priority']);
+ $cflink['description'] = trim($this->GetDescription());
+ if (empty($cflink['description']))
+ unset($cflink['description']);
+ $cflink['bandwidth'] = $this->GetBandwidth();
+ $cflink['bandwidthtype'] = $this->GetBwscale();
+ $cflink['enabled'] = trim($this->GetEnabled());
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
+ $cflink['default'] = trim($this->GetDefault());
+ if (empty($cflink['default']))
+ unset($cflink['default']);
+ $cflink['red'] = trim($this->GetRed());
+ if (empty($cflink['red']))
+ unset($cflink['red']);
+ $cflink['rio'] = trim($this->GetRio());
+ if (empty($cflink['rio']))
+ unset($cflink['rio']);
+ $cflink['ecn'] = trim($this->GetEcn());
+ if (empty($cflink['ecn']))
+ unset($cflink['ecn']);
+ if ($this->GetLinkshare() <> "") {
+ if ($this->GetL_m1() <> "") {
+ $cflink['linkshare1'] = $this->GetL_m1();
+ $cflink['linkshare2'] = $this->GetL_d();
+ $cflink['linkshare'] = "on";
+ } else {
+ unset($cflink['linkshare1']);
+ unset($cflink['linkshare2']);
+ unset($cflink['linkshare']);
}
- unset_object_by_reference($this->GetLink());
+ if ($this->GetL_m2() <> "") {
+ $cflink['linkshare3'] = $this->GetL_m2();
+ $cflink['linkshare'] = "on";
+ } else {
+ unset($cflink['linkshare3']);
+ unset($cflink['linkshare']);
}
-
- /*
- * Should search even its children
- */
- function &find_queue($interface, $qname) {
- if ($qname == $this->GetQname())
- return $this;
-
- foreach ($this->subqueues as $q) {
- $result =& $q->find_queue("", $qname);
- if ($result)
- return $result;
- }
+ }
+ if ($this->GetRealtime() <> "") {
+ if ($this->GetR_m1() <> "") {
+ $cflink['realtime1'] = $this->GetR_m1();
+ $cflink['realtime2'] = $this->GetR_d();
+ $cflink['realtime'] = "on";
+ } else {
+ unset($cflink['realtime1']);
+ unset($cflink['realtime2']);
+ unset($cflink['realtime']);
+ }
+ if ($this->GetR_m2() <> "") {
+ $cflink['realtime3'] = $this->GetR_m2();
+ $cflink['realtime'] = "on";
+ } else {
+ unset($cflink['realtime3']);
+ unset($cflink['realtime']);
+ }
+ }
+ if ($this->GetUpperlimit() <> "") {
+ if ($this->GetU_m1() <> "") {
+ $cflink['upperlimit1'] = $this->GetU_m1();
+ $cflink['upperlimit2'] = $this->GetU_d();
+ $cflink['upperlimit'] = "on";
+ } else {
+ unset($cflink['upperlimit']);
+ unset($cflink['upperlimit1']);
+ unset($cflink['upperlimit2']);
+ }
+ if ($this->GetU_m2() <> "") {
+ $cflink['upperlimit3'] = $this->GetU_m2();
+ $cflink['upperlimit'] = "on";
+ } else {
+ unset($cflink['upperlimit3']);
+ unset($cflink['upperlimit']);
+ }
+ }
+
+ if (is_array($this->subqueues)) {
+ $cflinkp['queue'] = array();
+ foreach ($this->subqueues as $q) {
+ $cflink['queue'][$q->GetQname()] = array();
+ $q->copy_queue($interface, &$cflink['queue'][$q->GetQname()]);
}
+ }
+ }
+
+ function delete_queue() {
+ unref_on_altq_queue_list($this->GetQname());
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue))
+ altq_set_default_queue($this->GetInterface(), "false");
+ cleanup_queue_from_rules($this->GetQname());
+ $parent =& $this->GetParent();
+ foreach ($this->subqueues as $q) {
+ $this->SetAvailableBandwidth($this->GetAvailableBandwidth() + $q->GetAvailableBandwidth());
+ $q->delete_queue();
+ }
+ unset_object_by_reference($this->GetLink());
+ }
+
+ /*
+ * Should search even its children
+ */
+ function &find_queue($interface, $qname) {
+ if ($qname == $this->GetQname())
+ return $this;
+
+ foreach ($this->subqueues as $q) {
+ $result =& $q->find_queue("", $qname);
+ if ($result)
+ return $result;
+ }
+ }
function &find_parentqueue($interface, $qname) {
if ($this->subqueues[$qname])
return $this;
- foreach ($this->subqueues as $q) {
- $result = $q->find_parentqueue("", $qname);
+ foreach ($this->subqueues as $q) {
+ $result = $q->find_parentqueue("", $qname);
if ($result)
return $result;
}
- }
+ }
function validate_input($data, &$input_errors) {
parent::validate_input($data, $input_errors);
@@ -1400,30 +1472,28 @@ class hfsc_queue extends priq_queue {
shaper_do_input_validation($data, $reqdfields, $reqdfieldsn, $input_errors);
if (isset($data['linkshare3']) && $data['linkshare3'] <> "") {
- if ($data['bandwidth'] && (!is_numeric($data['bandwidth'])))
- $input_errors[] = "Bandwidth must be an integer.";
+ if ($data['bandwidth'] && (!is_numeric($data['bandwidth'])))
+ $input_errors[] = "Bandwidth must be an integer.";
- if ($data['bandwidth'] < 0)
- $input_errors[] = "Bandwidth cannot be negative.";
+ if ($data['bandwidth'] < 0)
+ $input_errors[] = "Bandwidth cannot be negative.";
- if ($data['bandwidthtype'] == "%") {
- if ($data['bandwidth'] > 100 || $data['bandwidth'] < 0)
- $input_errors[] = "Bandwidth in percentage should be between 1 and 100 bounds.";
- }
-/*
- $parent =& $this->GetParent();
- switch ($data['bandwidthtype']) {
- case "%":
- $myBw = $parent->GetAvailableBandwidth() * floatval($data['bandwidth']) / 100;
- default:
- $mybw = floatval($data['bandwidth']) * get_bandwidthtype_scale($data['bandwidthtype']);
- break;
- }
- if ($parent->GetAvailableBandwidth() < $myBw)
- $input_errors[] = "The sum of children bandwidth exceeds that of the parent.";
-*/
- if ($data['priority'] > 7)
- $input_errors[] = "Priority must be an integer between 1 and 7.";
+ if ($data['bandwidthtype'] == "%") {
+ if ($data['bandwidth'] > 100 || $data['bandwidth'] < 0)
+ $input_errors[] = "Bandwidth in percentage should be between 1 and 100 bounds.";
+ }
+ /*
+ $parent =& $this->GetParent();
+ switch ($data['bandwidthtype']) {
+ case "%":
+ $myBw = $parent->GetAvailableBandwidth() * floatval($data['bandwidth']) / 100;
+ default:
+ $mybw = floatval($data['bandwidth']) * get_bandwidthtype_scale($data['bandwidthtype']);
+ break;
+ }
+ if ($parent->GetAvailableBandwidth() < $myBw)
+ $input_errors[] = "The sum of children bandwidth exceeds that of the parent.";
+ */
}
if ($data['upperlimit1'] <> "" && $data['upperlimit2'] == "")
@@ -1436,19 +1506,18 @@ class hfsc_queue extends priq_queue {
$input_errors[] = ("upperlimit d value needs to be numeric");
if ($data['upperlimit3'] <> "" && !is_valid_shaperbw($data['upperlimit3']))
$input_errors[] = ("upperlimit m2 value needs to be Kb, Mb, Gb, or %");
-/*
+ /*
if (isset($data['upperlimit']) && $data['upperlimit3'] <> "" && $data['upperlimit1'] <> "") {
- $bw_1 = get_hfsc_bandwidth($this, $data['upperlimit1']);
- $bw_2 = get_hfsc_bandwidth($this, $data['upperlimit3']);
- if (floatval($bw_1) < floatval($bw_2))
- $input_errors[] = ("upperlimit m1 cannot be smaller than m2");
+ $bw_1 = get_hfsc_bandwidth($this, $data['upperlimit1']);
+ $bw_2 = get_hfsc_bandwidth($this, $data['upperlimit3']);
+ if (floatval($bw_1) < floatval($bw_2))
+ $input_errors[] = ("upperlimit m1 cannot be smaller than m2");
-
- if (get_interface_bandwidth($this) < (0.8 * (floatval($bw_1) + floatval($bw_2))))
- $input_errors[] = ("upperlimit specification excedd 80% of allowable allocation.");
+ if (get_interface_bandwidth($this) < (0.8 * (floatval($bw_1) + floatval($bw_2))))
+ $input_errors[] = ("upperlimit specification excedd 80% of allowable allocation.");
}
-*/
+ */
if ($data['linkshare1'] <> "" && $data['linkshare2'] == "")
$input_errors[] = ("linkshare service curve defined but missing (d) value");
if ($data['linkshare2'] <> "" && $data['linkshare1'] == "")
@@ -1464,18 +1533,17 @@ class hfsc_queue extends priq_queue {
if ($data['realtime2'] <> "" && $data['realtime1'] == "")
$input_errors[] = ("realtime service curve defined but missing initial bandwidth (m1) value");
-/*
+ /*
if (isset($data['linkshare']) && $data['linkshare3'] <> "" && $data['linkshare1'] <> "" && 0) {
- $bw_1 = get_hfsc_bandwidth($this, $data['linkshare1']);
- $bw_2 = get_hfsc_bandwidth($this, $data['linkshare3']);
- if (floatval($bw_1) < floatval($bw_2))
- $input_errors[] = ("linkshare m1 cannot be smaller than m2");
-
+ $bw_1 = get_hfsc_bandwidth($this, $data['linkshare1']);
+ $bw_2 = get_hfsc_bandwidth($this, $data['linkshare3']);
+ if (floatval($bw_1) < floatval($bw_2))
+ $input_errors[] = ("linkshare m1 cannot be smaller than m2");
- if (get_interface_bandwidth($this) < (0.8 * (floatval($bw_1) + floatval($bw_2))))
- $input_errors[] = ("linkshare specification excedd 80% of allowable allocation.");
+ if (get_interface_bandwidth($this) < (0.8 * (floatval($bw_1) + floatval($bw_2))))
+ $input_errors[] = ("linkshare specification excedd 80% of allowable allocation.");
}
-*/
+ */
if ($data['realtime1'] <> "" && !is_valid_shaperbw($data['realtime1']))
$input_errors[] = ("realtime m1 value needs to be Kb, Mb, Gb, or %");
@@ -1484,64 +1552,66 @@ class hfsc_queue extends priq_queue {
if ($data['realtime3'] <> "" && !is_valid_shaperbw($data['realtime3']))
$input_errors[] = ("realtime m2 value needs to be Kb, Mb, Gb, or %");
-/*
+ /*
if (isset($data['realtime']) && $data['realtime3'] <> "" && $data['realtime1'] <> "" && 0) {
- $bw_1 = get_hfsc_bandwidth($this, $data['realtime1']);
- $bw_2 = get_hfsc_bandwidth($this, $data['realtime3']);
- if (floatval($bw_1) < floatval($bw_2))
- $input_errors[] = ("realtime m1 cannot be smaller than m2");
+ $bw_1 = get_hfsc_bandwidth($this, $data['realtime1']);
+ $bw_2 = get_hfsc_bandwidth($this, $data['realtime3']);
+ if (floatval($bw_1) < floatval($bw_2))
+ $input_errors[] = ("realtime m1 cannot be smaller than m2");
-
- if (get_interface_bandwidth($this) < (0.8 * (floatval($bw_1) + floatval($bw_2))))
- $input_errors[] = ("realtime specification excedd 80% of allowable allocation.");
+ if (get_interface_bandwidth($this) < (0.8 * (floatval($bw_1) + floatval($bw_2))))
+ $input_errors[] = ("realtime specification excedd 80% of allowable allocation.");
}
-*/
+ */
}
- function ReadConfig(&$cflink) {
- if (isset($cflink['linkshare']) && $cflink['linkshare'] <> "") {
- if (isset($cflink['linkshare1']) && $cflink['linkshare1'] <> "") {
+ function ReadConfig(&$cflink) {
+ if (!empty($cflink['linkshare'])) {
+ if (!empty($cflink['linkshare1'])) {
$this->SetL_m1($cflink['linkshare1']);
$this->SetL_d($cflink['linkshare2']);
$this->SetLinkshare();
}
- if (isset($cflink['linkshare3']) && $cflink['linkshare3'] <> "") {
+ if (!empty($cflink['linkshare3'])) {
$this->SetL_m2($cflink['linkshare3']);
$this->SetLinkshare();
}
- } else $this->DisableLinkshare();
- if (isset($cflink['realtime']) && $cflink['realtime'] <> "") {
- if (isset($cflink['realtime1']) && $cflink['realtime1'] <> "") {
+ } else
+ $this->DisableLinkshare();
+ if (!empty($cflink['realtime'])) {
+ if (!empty($cflink['realtime1'])) {
$this->SetR_m1($cflink['realtime1']);
$this->SetR_d($cflink['realtime2']);
$this->SetRealtime();
}
- if (isset($cflink['realtime3']) && $cflink['realtime3'] <> "") {
+ if (!empty($cflink['realtime3'])) {
$this->SetR_m2($cflink['realtime3']);
$this->SetRealtime();
}
- } else $this->DisableRealtime();
- if (isset($cflink['upperlimit']) && $cflink['upperlimit'] <> "") {
- if (isset($cflink['upperlimit1']) && $cflink['upperlimit1'] <> "") {
+ } else
+ $this->DisableRealtime();
+ if (!empty($cflink['upperlimit'])) {
+ if (!empty($cflink['upperlimit1'])) {
$this->SetU_m1($cflink['upperlimit1']);
$this->SetU_d($cflink['upperlimit2']);
$this->SetUpperlimit();
}
- if (isset($cflink['upperlimit3']) && $cflink['upperlimit3'] <> "") {
+ if (!empty($cflink['upperlimit3'])) {
$this->SetU_m2($cflink['upperlimit3']);
$this->SetUpperlimit();
}
- } else $this->DisableUpperlimit();
+ } else
+ $this->DisableUpperlimit();
parent::ReadConfig($cflink);
-
- }
+ }
function build_tree() {
$tree = " <li><a href=\"firewall_shaper.php?interface=" . $this->GetInterface() ."&queue=" . $this->GetQname()."&action=show";
$tree .= "\" ";
- if ($this->GetDefault())
- $tree .= " class=\"navlnk\"";
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue))
+ $tree .= " class=\"navlnk\"";
$tree .= " >" . $this->GetQname() . "</a>";
if (is_array($this->subqueues)) {
$tree .= "<ul>";
@@ -1554,63 +1624,67 @@ class hfsc_queue extends priq_queue {
return $tree;
}
- /* Even this should take children into consideration */
- function build_rules() {
+ /* Even this should take children into consideration */
+ function build_rules() {
- $pfq_rule = " queue ". $this->qname;
- if ($this->GetInterface())
- $pfq_rule .= " on ".get_real_interface($this->GetInterface());
+ $pfq_rule = " queue ". $this->qname;
+ if ($this->GetInterface())
+ $pfq_rule .= " on ".get_real_interface($this->GetInterface());
if ($this->GetBandwidth() && $this->GetBwscale())
- $pfq_rule .= " bandwidth ".trim($this->GetBandwidth()).$this->GetBwscale();
-
- if ($this->GetQpriority())
- $pfq_rule .= " priority " . $this->GetQpriority();
- if ($this->GetQlimit())
- $pfq_rule .= " qlimit " . $this->GetQlimit();
- if ($this->GetDefault() || $this->GetRed() || $this->GetRio() || $this->GetEcn() || $this->GetRealtime() <> "" || $this->GetLinkshare() <> "" || $this->GetUpperlimit() <> "") {
- $pfq_rule .= " hfsc ( ";
- if ($this->GetRed()) {
- $comma = 1;
- $pfq_rule .= " red ";
- }
- if ($this->GetRio()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " rio ";
- }
- if ($this->GetEcn()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " ecn ";
- }
- if ($this->GetDefault()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " default ";
- }
-
- if ($this->GetRealtime() <> "") {
+ $pfq_rule .= " bandwidth ".trim($this->GetBandwidth()).$this->GetBwscale();
+
+ $tmpvalue = $this->GetQlimit();
+ if (!empty($tmpvalue))
+ $pfq_rule .= " qlimit " . $this->GetQlimit();
+ if ($this->GetDefault() || $this->GetRed() || $this->GetRio() || $this->GetEcn() || $this->GetRealtime() <> "" || $this->GetLinkshare() <> "" || $this->GetUpperlimit() <> "") {
+ $pfq_rule .= " hfsc ( ";
+ $tmpvalue = $this->GetRed();
+ if (!empty($tmpvalue)) {
+ $comma = 1;
+ $pfq_rule .= " red ";
+ }
+
+ $tmpvalue = $this->GetRio();
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " rio ";
+ }
+ $tmpvalue = $this->GetEcn();
+ if (!empty($tmpvalue)) {
if ($comma)
- $pfq_rule .= " , ";
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " ecn ";
+ }
+ $tmpvalue = $this->GetDefault();
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " default ";
+ }
+
+ if ($this->GetRealtime() <> "") {
+ if ($comma)
+ $pfq_rule .= " , ";
if ($this->GetR_m1() <> "" && $this->GetR_d() <> "" && $this->GetR_m2() <> "")
- $pfq_rule .= " realtime (".$this->GetR_m1() . ", " . $this->GetR_d().", ". $this->GetR_m2() .") ";
+ $pfq_rule .= " realtime (".$this->GetR_m1() . ", " . $this->GetR_d().", ". $this->GetR_m2() .") ";
else if ($this->GetR_m2() <> "")
$pfq_rule .= " realtime " . $this->GetR_m2();
$comma = 1;
}
- if ($this->GetLinkshare() <> "") {
- if ($comma)
+ if ($this->GetLinkshare() <> "") {
+ if ($comma)
$pfq_rule .= " ,";
if ($this->GetL_m1() <> "" && $this->GetL_d() <> "" && $this->GetL_m2() <> "")
- $pfq_rule .= " linkshare (".$this->GetL_m1(). ", ". $this->GetL_d(). ", ". $this->GetL_m2(). ") ";
+ $pfq_rule .= " linkshare (".$this->GetL_m1(). ", ". $this->GetL_d(). ", ". $this->GetL_m2(). ") ";
else if ($this->GetL_m2() <> "")
$pfq_rule .= " linkshare " . $this->GetL_m2() . " ";
$comma = 1;
}
- if ($this->GetUpperlimit() <> "") {
+ if ($this->GetUpperlimit() <> "") {
if ($comma)
$pfq_rule .= " ,";
if ($this->GetU_m1() <> "" && $this->GetU_d() <> "" && $this->GetU_m2() <> "")
@@ -1618,27 +1692,27 @@ class hfsc_queue extends priq_queue {
else if ($this->GetU_m2() <> "")
$pfq_rule .= " upperlimit " . $this->GetU_m2() . " ";
}
- $pfq_rule .= " ) ";
- }
- if (count($this->subqueues)) {
- $i = count($this->subqueues);
- $pfq_rule .= " { ";
- foreach ($this->subqueues as $qkey => $qnone) {
- if ($i > 1) {
- $i--;
- $pfq_rule .= " {$qkey}, ";
- } else
- $pfq_rule .= " {$qkey} ";
- }
- $pfq_rule .= " } \n";
- foreach ($this->subqueues as $q)
- $pfq_rule .= $q->build_rules();
- }
+ $pfq_rule .= " ) ";
+ }
+ if (count($this->subqueues)) {
+ $i = count($this->subqueues);
+ $pfq_rule .= " { ";
+ foreach ($this->subqueues as $qkey => $qnone) {
+ if ($i > 1) {
+ $i--;
+ $pfq_rule .= " {$qkey}, ";
+ } else
+ $pfq_rule .= " {$qkey} ";
+ }
+ $pfq_rule .= " } \n";
+ foreach ($this->subqueues as $q)
+ $pfq_rule .= $q->build_rules();
+ }
- $pfq_rule .= " \n";
+ $pfq_rule .= " \n";
- return $pfq_rule;
- }
+ return $pfq_rule;
+ }
function build_javascript() {
$javascript = parent::build_javascript();
@@ -1682,100 +1756,109 @@ class hfsc_queue extends priq_queue {
return $javascript;
}
- function build_form() {
- $form = "<tr>";
- $form .= "<td valign=\"top\" class=\"vncellreq\">Bandwidth</td>";
- $form .= "<td class=\"vtable\"> <input name=\"bandwidth\" id=\"bandwidth\" class=\"formfld unknown\" value=\"";
- $form .= htmlspecialchars($this->GetBandwidth());
- $form .= "\">";
- $form .= "<select name=\"bandwidthtype\" id=\"bandwidthtype\" class=\"formselect\">";
- $form .= "<option value=\"Gb\"";
- if ($this->GetBwscale() == "Gb")
- $form .= " selected=\"yes\"";
- $form .= ">Gbit/s</option>";
- $form .= "<option value=\"Mb\"";
- if ($this->GetBwscale() == "Mb")
- $form .= " selected=\"yes\"";
- $form .= ">Mbit/s</option>";
- $form .= "<option value=\"Kb\"";
- if ($this->GetBwscale() == "Kb")
- $form .= " selected=\"yes\"";
- $form .= ">Kbit/s</option>";
- $form .= "<option value=\"\"";
- if ($this->GetBwscale() == "b")
- $form .= " selected=\"yes\"";
- $form .= ">Bit/s</option>";
- $form .= "<option value=\"%\"";
- if ($this->GetBwscale() == "%")
- $form .= " selected=\"yes\"";
- $form .= ">%</option>";
- $form .= "</select> <br>";
- $form .= "<span class=\"vexpl\">Choose the amount of bandwidth for this queue";
- $form .= "</span></td>";
- $form .= parent::build_form();
- $form .= "<tr>";
- $form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">Service Curve (sc)</td>";
- $form .= "<td width=\"78%\" class=\"vtable\">";
- $form .= "<table>";
- $form .= "<tr><td>&nbsp;</td><td><center>m1</center></td><td><center>d</center></td><td><center><b>m2</b></center></td></tr>";
- $form .= "<tr><td><input type=\"checkbox\" id=\"upperlimit\" name=\"upperlimit\"";
- if($this->GetUpperlimit()<> "")
- $form .= " CHECKED ";
- $form .= "onChange=\"enable_upperlimit()\"> Upperlimit:</td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetU_m1());
- $form .= "\" id=\"upperlimit1\" name=\"upperlimit1\" ";
- if ($this->GetUpperlimit() == "") $form .= " disabled";
- $form .= "></td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetU_d());
- $form .= "\" id=\"upperlimi2\" name=\"upperlimit2\" ";
- if ($this->GetUpperlimit() == "") $form .= " disabled";
+ function build_form() {
+ $form = "<tr>";
+ $form .= "<td valign=\"top\" class=\"vncellreq\">Bandwidth</td>";
+ $form .= "<td class=\"vtable\"> <input name=\"bandwidth\" id=\"bandwidth\" class=\"formfld unknown\" value=\"";
+ $form .= htmlspecialchars($this->GetBandwidth());
+ $form .= "\">";
+ $form .= "<select name=\"bandwidthtype\" id=\"bandwidthtype\" class=\"formselect\">";
+ $form .= "<option value=\"Gb\"";
+ if ($this->GetBwscale() == "Gb")
+ $form .= " selected=\"yes\"";
+ $form .= ">Gbit/s</option>";
+ $form .= "<option value=\"Mb\"";
+ if ($this->GetBwscale() == "Mb")
+ $form .= " selected=\"yes\"";
+ $form .= ">Mbit/s</option>";
+ $form .= "<option value=\"Kb\"";
+ if ($this->GetBwscale() == "Kb")
+ $form .= " selected=\"yes\"";
+ $form .= ">Kbit/s</option>";
+ $form .= "<option value=\"\"";
+ if ($this->GetBwscale() == "b")
+ $form .= " selected=\"yes\"";
+ $form .= ">Bit/s</option>";
+ $form .= "<option value=\"%\"";
+ if ($this->GetBwscale() == "%")
+ $form .= " selected=\"yes\"";
+ $form .= ">%</option>";
+ $form .= "</select> <br>";
+ $form .= "<span class=\"vexpl\">Choose the amount of bandwidth for this queue";
+ $form .= "</span></td>";
+ $form .= parent::build_form();
+ $form .= "<tr>";
+ $form .= "<td width=\"22%\" valign=\"top\" class=\"vncellreq\">Service Curve (sc)</td>";
+ $form .= "<td width=\"78%\" class=\"vtable\">";
+ $form .= "<table>";
+ $form .= "<tr><td>&nbsp;</td><td><center>m1</center></td><td><center>d</center></td><td><center><b>m2</b></center></td></tr>";
+ $form .= "<tr><td><input type=\"checkbox\" id=\"upperlimit\" name=\"upperlimit\"";
+ if($this->GetUpperlimit()<> "")
+ $form .= " CHECKED ";
+ $form .= "onChange=\"enable_upperlimit()\"> Upperlimit:</td><td><input size=\"6\" value=\"";
+ $form .= htmlspecialchars($this->GetU_m1());
+ $form .= "\" id=\"upperlimit1\" name=\"upperlimit1\" ";
+ if ($this->GetUpperlimit() == "")
+ $form .= " disabled";
$form .= "></td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetU_m2());
- $form .= "\" id=\"upperlimit3\" name=\"upperlimit3\" ";
- if ($this->GetUpperlimit() == "") $form .= " disabled";
+ $form .= htmlspecialchars($this->GetU_d());
+ $form .= "\" id=\"upperlimi2\" name=\"upperlimit2\" ";
+ if ($this->GetUpperlimit() == "")
+ $form .= " disabled";
+ $form .= "></td><td><input size=\"6\" value=\"";
+ $form .= htmlspecialchars($this->GetU_m2());
+ $form .= "\" id=\"upperlimit3\" name=\"upperlimit3\" ";
+ if ($this->GetUpperlimit() == "")
+ $form .= " disabled";
$form .= "></td><td>The maximum allowed bandwidth for the queue.</td></tr>";
- $form .= "<tr><td><input type=\"checkbox\" id=\"realtime\" name=\"realtime\"";
- if($this->GetRealtime() <> "")
+ $form .= "<tr><td><input type=\"checkbox\" id=\"realtime\" name=\"realtime\"";
+ if($this->GetRealtime() <> "")
$form .= " CHECKED ";
- $form .= "onChange=\"enable_realtime()\"> Real time:</td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetR_m1());
- $form .= "\" id=\"realtime1\" name=\"realtime1\" ";
- if ($this->GetRealtime() == "") $form .= " disabled";
+ $form .= "onChange=\"enable_realtime()\"> Real time:</td><td><input size=\"6\" value=\"";
+ $form .= htmlspecialchars($this->GetR_m1());
+ $form .= "\" id=\"realtime1\" name=\"realtime1\" ";
+ if ($this->GetRealtime() == "")
+ $form .= " disabled";
$form .= "></td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetR_d());
- $form .= "\" id=\"realtime2\" name=\"realtime2\" ";
- if ($this->GetRealtime() == "") $form .= " disabled";
+ $form .= htmlspecialchars($this->GetR_d());
+ $form .= "\" id=\"realtime2\" name=\"realtime2\" ";
+ if ($this->GetRealtime() == "")
+ $form .= " disabled";
$form .= "></td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetR_m2());
- $form .= "\" id=\"realtime3\" name=\"realtime3\" ";
- if ($this->GetRealtime() == "") $form .= " disabled";
+ $form .= htmlspecialchars($this->GetR_m2());
+ $form .= "\" id=\"realtime3\" name=\"realtime3\" ";
+ if ($this->GetRealtime() == "")
+ $form .= " disabled";
$form .= "></td><td>The minimum required bandwidth for the queue.</td></tr>";
- $form .= "<tr><td><input type=\"checkbox\" id=\"linkshare\" id=\"linkshare\" name=\"linkshare\"";
- if($this->GetLinkshare() <> "")
+ $form .= "<tr><td><input type=\"checkbox\" id=\"linkshare\" id=\"linkshare\" name=\"linkshare\"";
+ if($this->GetLinkshare() <> "")
$form .= " CHECKED ";
- $form .= "onChange=\"enable_linkshare()\"> Link share:</td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetL_m1());
- $form .= "\" id=\"linkshare1\" name=\"linkshare1\" ";
- if ($this->GetLinkshare() == "") $form .= " disabled";
+ $form .= "onChange=\"enable_linkshare()\"> Link share:</td><td><input size=\"6\" value=\"";
+ $form .= htmlspecialchars($this->GetL_m1());
+ $form .= "\" id=\"linkshare1\" name=\"linkshare1\" ";
+ if ($this->GetLinkshare() == "")
+ $form .= " disabled";
$form .= "></td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetL_d());
- $form .= "\" id=\"linkshare2\" name=\"linkshare2\" ";
- if ($this->GetLinkshare() == "") $form .= " disabled";
+ $form .= htmlspecialchars($this->GetL_d());
+ $form .= "\" id=\"linkshare2\" name=\"linkshare2\" ";
+ if ($this->GetLinkshare() == "")
+ $form .= " disabled";
$form .= "></td><td><input size=\"6\" value=\"";
- $form .= htmlspecialchars($this->GetL_m2());
- $form .= "\" id=\"linkshare3\" name=\"linkshare3\" ";
- if ($this->GetLinkshare() == "") $form .= " disabled";
+ $form .= htmlspecialchars($this->GetL_m2());
+ $form .= "\" id=\"linkshare3\" name=\"linkshare3\" ";
+ if ($this->GetLinkshare() == "")
+ $form .= " disabled";
$form .= "></td><td>The bandwidth share of a backlogged queue - this overrides priority.</td></tr>";
- $form .= "</table><br>";
- $form .= "The format for service curve specifications is (m1, d, m2). m2 controls";
- $form .= "the bandwidth assigned to the queue. m1 and d are optional and can be";
- $form .= "used to control the initial bandwidth assignment. For the first d milliseconds the queue gets the bandwidth given as m1, afterwards the value";
- $form .= "given in m2.";
- $form .= "</span></td>";
- $form .= "</tr>";
-
- return $form;
- }
+ $form .= "</table><br>";
+ $form .= "The format for service curve specifications is (m1, d, m2). m2 controls";
+ $form .= "the bandwidth assigned to the queue. m1 and d are optional and can be";
+ $form .= "used to control the initial bandwidth assignment. For the first d milliseconds the queue gets the bandwidth given as m1, afterwards the value";
+ $form .= "given in m2.";
+ $form .= "</span></td>";
+ $form .= "</tr>";
+
+ return $form;
+ }
function update_altq_queue_data(&$data) {
$this->ReadConfig($data);
@@ -1785,56 +1868,108 @@ class hfsc_queue extends priq_queue {
$cflink =& get_reference_to_me_in_config($this->GetLink());
if (!is_array($cflink))
$cflink = array();
- $cflink['name'] = $this->GetQname();
- $cflink['interface'] = $this->GetInterface();
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['priority'] = $this->GetQpriority();
- $cflink['description'] = $this->GetDescription();
- $cflink['bandwidth'] = $this->GetBandwidth();
- $cflink['bandwidthtype'] = $this->GetBwscale();
- $cflink['enabled'] = $this->GetEnabled();
- $cflink['default'] = $this->GetDefault();
- $cflink['red'] = $this->GetRed();
- $cflink['rio'] = $this->GetRio();
- $cflink['ecn'] = $this->GetEcn();
- if ($this->GetLinkshare() <> "") {
- if ($this->GetL_m1() <> "") {
- $cflink['linkshare1'] = $this->GetL_m1();
- $cflink['linkshare2'] = $this->GetL_d();
- $cflink['linkshare'] = "on";
- }
- if ($this->GetL_m2() <> "") {
- $cflink['linkshare3'] = $this->GetL_m2();
- $cflink['linkshare'] = "on";
- }
- } else $cflink['linkshare'] = "";
- if ($this->GetRealtime() <> "") {
- if ($this->GetR_m1() <> "") {
- $cflink['realtime1'] = $this->GetR_m1();
- $cflink['realtime2'] = $this->GetR_d();
- $cflink['realtime'] = "on";
- }
- if ($this->GetR_m2() <> "") {
- $cflink['realtime3'] = $this->GetR_m2();
- $cflink['realtime'] = "on";
- }
- } else $cflink['realtime'] = "";
- if ($this->GetUpperlimit() <> "") {
- if ($this->GetU_m1() <> "") {
- $cflink['upperlimit1'] = $this->GetU_m1();
- $cflink['upperlimit2'] = $this->GetU_d();
- $cflink['upperlimit'] = "on";
- }
- if ($this->GetU_m2() <> "") {
- $cflink['upperlimit3'] = $this->GetU_m2();
- $cflink['upperlimit'] = "on";
- }
- } else $cflink['upperlimit'] = "";
+ $cflink['name'] = $this->GetQname();
+ $cflink['interface'] = $this->GetInterface();
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($cflink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['priority'] = $this->GetQpriority();
+ if (empty($cflink['priority']))
+ unset($cflink['priority']);
+ $cflink['description'] = $this->GetDescription();
+ if (empty($cflink['description']))
+ unset($cflink['description']);
+ $cflink['bandwidth'] = $this->GetBandwidth();
+ $cflink['bandwidthtype'] = $this->GetBwscale();
+ $cflink['enabled'] = $this->GetEnabled();
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
+ $cflink['default'] = $this->GetDefault();
+ if (empty($cflink['default']))
+ unset($cflink['default']);
+ $cflink['red'] = trim($this->GetRed());
+ if (empty($cflink['red']))
+ unset($cflink['red']);
+ $cflink['rio'] = $this->GetRio();
+ if (empty($cflink['rio']))
+ unset($cflink['rio']);
+ $cflink['ecn'] = trim($this->GetEcn());
+ if (empty($cflink['ecn']))
+ unset($cflink['ecn']);
+ if ($this->GetLinkshare() <> "") {
+ if ($this->GetL_m1() <> "") {
+ $cflink['linkshare1'] = $this->GetL_m1();
+ $cflink['linkshare2'] = $this->GetL_d();
+ $cflink['linkshare'] = "on";
+ } else {
+ unset($cflink['linkshare']);
+ unset($cflink['linkshare1']);
+ unset($cflink['linkshare2']);
+ }
+ if ($this->GetL_m2() <> "") {
+ $cflink['linkshare3'] = $this->GetL_m2();
+ $cflink['linkshare'] = "on";
+ } else {
+ unset($cflink['linkshare']);
+ unset($cflink['linkshare3']);
+ }
+ } else {
+ unset($cflink['linkshare']);
+ unset($cflink['linkshare1']);
+ unset($cflink['linkshare2']);
+ unset($cflink['linkshare3']);
+ }
+ if ($this->GetRealtime() <> "") {
+ if ($this->GetR_m1() <> "") {
+ $cflink['realtime1'] = $this->GetR_m1();
+ $cflink['realtime2'] = $this->GetR_d();
+ $cflink['realtime'] = "on";
+ } else {
+ unset($cflink['realtime']);
+ unset($cflink['realtime1']);
+ unset($cflink['realtime2']);
+ }
+ if ($this->GetR_m2() <> "") {
+ $cflink['realtime3'] = $this->GetR_m2();
+ $cflink['realtime'] = "on";
+ } else {
+ unset($cflink['realtime']);
+ unset($cflink['realtime3']);
+ }
+ } else {
+ unset($cflink['realtime']);
+ unset($cflink['realtime1']);
+ unset($cflink['realtime2']);
+ unset($cflink['realtime3']);
+ }
+ if ($this->GetUpperlimit() <> "") {
+ if ($this->GetU_m1() <> "") {
+ $cflink['upperlimit1'] = $this->GetU_m1();
+ $cflink['upperlimit2'] = $this->GetU_d();
+ $cflink['upperlimit'] = "on";
+ } else {
+ unset($cflink['upperlimit']);
+ unset($cflink['upperlimit1']);
+ unset($cflink['upperlimit2']);
+ }
+ if ($this->GetU_m2() <> "") {
+ $cflink['upperlimit3'] = $this->GetU_m2();
+ $cflink['upperlimit'] = "on";
+ } else {
+ unset($cflink['upperlimit']);
+ unset($cflink['upperlimit3']);
+ }
+ } else {
+ unset($cflink['upperlimit']);
+ unset($cflink['upperlimit1']);
+ unset($cflink['upperlimit2']);
+ unset($cflink['upperlimit3']);
}
}
+}
class cbq_queue extends priq_queue {
- var $qborrow;
+ var $qborrow = "";
function GetBorrow() {
return $this->qborrow;
@@ -1843,13 +1978,13 @@ class cbq_queue extends priq_queue {
$this->qborrow = $borrow;
}
function CanHaveChildren() {
- return true;
+ return true;
}
function &add_queue($interface, &$qname, &$path, &$input_errors) {
if (!is_array($this->subqueues))
- $this->subqueues = array();
+ $this->subqueues = array();
$q =& new cbq_queue();
$q->SetInterface($this->GetInterface());
$q->SetParent(&$this);
@@ -1859,12 +1994,12 @@ class cbq_queue extends priq_queue {
return $q;
}
switch ($q->GetBwscale()) {
- case "%":
- $myBw = $this->GetAvailableBandwidth() * $qname['bandwidth'] / 100;
- break;
- default:
- $myBw = $qname['bandwidth'] * get_bandwidthtype_scale($q->GetBwscale());
- break;
+ case "%":
+ $myBw = $this->GetAvailableBandwidth() * $qname['bandwidth'] / 100;
+ break;
+ default:
+ $myBw = $qname['bandwidth'] * get_bandwidthtype_scale($q->GetBwscale());
+ break;
}
$q->SetAvailableBandwidth($myBw);
$this->SetAvailableBandwidth($this->GetAvailableBandwidth() - $myBw);
@@ -1874,75 +2009,92 @@ class cbq_queue extends priq_queue {
$this->subqueues[$q->GetQName()] = &$q;
ref_on_altq_queue_list($this->GetQname(), $q->GetQname());
if (is_array($qname['queue'])) {
- foreach ($qname['queue'] as $key1 => $que) {
- array_push($path, $key1);
- $q->add_queue($q->GetInterface(), &$que, &$path, $input_errors);
- array_pop($path);
- }
+ foreach ($qname['queue'] as $key1 => $que) {
+ array_push($path, $key1);
+ $q->add_queue($q->GetInterface(), &$que, &$path, $input_errors);
+ array_pop($path);
+ }
}
return $q;
- }
+ }
- function copy_queue($interface, &$cflink) {
-
- $cflink['interface'] = $interface;
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['priority'] = $this->GetQpriority();
- $cflink['name'] = $this->GetQname();
- $cflink['description'] = $this->GetDescription();
- $cflink['bandwidth'] = $this->GetBandwidth();
- $cflink['bandwidthtype'] = $this->GetBwscale();
- $cflink['enabled'] = $this->GetEnabled();
- $cflink['default'] = $this->GetDefault();
- $cflink['red'] = $this->GetRed();
- $cflink['rio'] = $this->GetRio();
- $cflink['ecn'] = $this->GetEcn();
- $cflink['borrow'] = $this->GetBorrow();
- if (is_array($this->queues)) {
- $cflinkp['queue'] = array();
- foreach ($this->subqueues as $q) {
- $cflink['queue'][$q->GetQname()] = array();
- $q->copy_queue($interface, &$cflink['queue'][$q->GetQname()]);
- }
- }
+ function copy_queue($interface, &$cflink) {
+ $cflink['interface'] = $interface;
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($clink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['priority'] = trim($this->GetQpriority());
+ if (empty($cflink['priority']))
+ unset($cflink['priority']);
+ $cflink['name'] = $this->GetQname();
+ $cflink['description'] = trim($this->GetDescription());
+ if (empty($cflink['description']))
+ unset($cflink['description']);
+ $cflink['bandwidth'] = $this->GetBandwidth();
+ $cflink['bandwidthtype'] = $this->GetBwscale();
+ $cflink['enabled'] = trim($this->GetEnabled());
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
+ $cflink['default'] = trim($this->GetDefault());
+ if (empty($cflink['default']))
+ unset($cflink['default']);
+ $cflink['red'] = trim($this->GetRed());
+ if (empty($cflink['red']))
+ unset($cflink['red']);
+ $cflink['rio'] = trim($this->GetRio());
+ if (empty($cflink['rio']))
+ unset($cflink['rio']);
+ $cflink['ecn'] = trim($this->GetEcn());
+ if (empty($cflink['ecn']))
+ unset($cflink['ecn']);
+ $cflink['borrow'] = trim($this->GetBorrow());
+ if (empty($cflink['borrow']))
+ unset($cflink['borrow']);
+ if (is_array($this->queues)) {
+ $cflinkp['queue'] = array();
+ foreach ($this->subqueues as $q) {
+ $cflink['queue'][$q->GetQname()] = array();
+ $q->copy_queue($interface, &$cflink['queue'][$q->GetQname()]);
+ }
}
+ }
- /*
- * Should search even its children
- */
- function &find_queue($interface, $qname) {
- if ($qname == $this->GetQname())
- return $this;
- foreach ($this->subqueues as $q) {
- $result =& $q->find_queue("", $qname);
+ /*
+ * Should search even its children
+ */
+ function &find_queue($interface, $qname) {
+ if ($qname == $this->GetQname())
+ return $this;
+ foreach ($this->subqueues as $q) {
+ $result =& $q->find_queue("", $qname);
if ($result)
- return $result;
- }
+ return $result;
}
+ }
function &find_parentqueue($interface, $qname) {
- if ($this->subqueues[$qname])
- return $this;
- foreach ($this->subqueues as $q) {
- $result = $q->find_parentqueue("", $qname);
+ if ($this->subqueues[$qname])
+ return $this;
+ foreach ($this->subqueues as $q) {
+ $result = $q->find_parentqueue("", $qname);
if ($result)
return $result;
}
- }
+ }
- function delete_queue() {
- unref_on_altq_queue_list($this->GetQname());
- if ($this->GetDefault())
- altq_set_default_queue($this->GetInterface(), "false");
- cleanup_queue_from_rules($this->GetQname());
- foreach ($this->subqueues as $q) {
- $this->SetAvailableBandwidth($this->GetAvailableBandwidth() + $q->GetAvailableBandwidth());
- $q->delete_queue();
- }
- unset_object_by_reference($this->GetLink());
+ function delete_queue() {
+ unref_on_altq_queue_list($this->GetQname());
+ if ($this->GetDefault())
+ altq_set_default_queue($this->GetInterface(), "false");
+ cleanup_queue_from_rules($this->GetQname());
+ foreach ($this->subqueues as $q) {
+ $this->SetAvailableBandwidth($this->GetAvailableBandwidth() + $q->GetAvailableBandwidth());
+ $q->delete_queue();
}
+ unset_object_by_reference($this->GetLink());
+ }
function validate_input($data, &$input_errors) {
parent::validate_input($data, $input_errors);
@@ -1957,17 +2109,16 @@ class cbq_queue extends priq_queue {
shaper_do_input_validation($data, $reqdfields, $reqdfieldsn, $input_errors);
if ($data['bandwidth'] && !is_numeric($data['bandwidth']))
- $input_errors[] = "Bandwidth must be an integer.";
+ $input_errors[] = "Bandwidth must be an integer.";
- if ($data['bandwidth'] < 0)
+ if ($data['bandwidth'] < 0)
$input_errors[] = "Bandwidth cannot be negative.";
-
- if ($data['bandwidthtype'] == "%") {
- if ($data['bandwidth'] > 100 || $data['bandwidth'] < 0)
- $input_errors[] = "Bandwidth in percentage should be between 1 and 100 bounds.";
- }
+ if ($data['bandwidthtype'] == "%") {
+ if ($data['bandwidth'] > 100 || $data['bandwidth'] < 0)
+ $input_errors[] = "Bandwidth in percentage should be between 1 and 100 bounds.";
+ }
/*
$parent =& $this->GetParent();
@@ -1982,11 +2133,12 @@ class cbq_queue extends priq_queue {
$input_errors[] = "The sum of the children bandwidth exceeds that of the parent.";
*/
}
- function ReadConfig(&$q) {
- parent::ReadConfig($q);
- if ($q['borrow'])
+
+ function ReadConfig(&$q) {
+ parent::ReadConfig($q);
+ if (!empty($q['borrow']))
$this->SetBorrow("on");
- }
+ }
function build_javascript() {
return parent::build_javascript();
@@ -1994,80 +2146,88 @@ class cbq_queue extends priq_queue {
function build_tree() {
$tree = " <li><a href=\"firewall_shaper.php?interface=" . $this->GetInterface()."&queue=" . $this->GetQname()."&action=show";
- $tree .= "\" ";
- if ($this->GetDefault())
- $tree .= " class=\"navlnk\"";
- $tree .= " >" . $this->GetQname() . "</a>";
- if (is_array($this->subqueues)) {
- $tree .= "<ul>";
- foreach ($this->subqueues as $q) {
- $tree .= $q->build_tree();
- }
- $tree .= "</ul>";
- }
- $tree .= "</li>";
- return $tree;
+ $tree .= "\" ";
+ $tmpvalue = trim($this->GetDefault());
+ if (!empty($tmpvalue))
+ $tree .= " class=\"navlnk\"";
+ $tree .= " >" . $this->GetQname() . "</a>";
+ if (is_array($this->subqueues)) {
+ $tree .= "<ul>";
+ foreach ($this->subqueues as $q) {
+ $tree .= $q->build_tree();
+ }
+ $tree .= "</ul>";
+ }
+ $tree .= "</li>";
+ return $tree;
}
/* Even this should take children into consideration */
function build_rules() {
- $pfq_rule = "queue ". $this->qname;
- if ($this->GetInterface())
- $pfq_rule .= " on ".get_real_interface($this->GetInterface());
- if ($this->GetBandwidth() && $this->GetBwscale())
- $pfq_rule .= " bandwidth ".trim($this->GetBandwidth()).$this->GetBwscale();
- if ($this->GetQpriority())
- $pfq_rule .= " priority " . $this->GetQpriority();
- if ($this->GetQlimit())
- $pfq_rule .= " qlimit " . $this->GetQlimit();
- if ($this->GetDefault() || $this->GetRed() || $this->GetRio() || $this->GetEcn() || $this->GetBorrow()) {
- $pfq_rule .= " cbq ( ";
- if ($this->GetRed()) {
- $comma = 1;
- $pfq_rule .= " red ";
- }
- if ($this->GetRio()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " rio ";
- }
- if ($this->GetEcn()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " ecn ";
- }
- if ($this->GetDefault()) {
- if ($comma)
- $pfq_rule .= " ,";
- $comma = 1;
- $pfq_rule .= " default ";
- }
- if ($this->GetBorrow()) {
- if ($comma)
- $pfq_rule .= ", ";
- $pfq_rule .= " borrow ";
- }
- $pfq_rule .= " ) ";
- }
- if (count($this->subqueues)) {
- $i = count($this->subqueues);
- $pfq_rule .= " { ";
- foreach ($this->subqueues as $qkey => $qnone) {
- if ($i > 1) {
- $i--;
- $pfq_rule .= " {$qkey}, ";
- } else
- $pfq_rule .= " {$qkey} ";
- }
- $pfq_rule .= " } \n";
- foreach ($this->subqueues as $q)
- $pfq_rule .= $q->build_rules();
+ $pfq_rule = "queue ". $this->qname;
+ if ($this->GetInterface())
+ $pfq_rule .= " on ".get_real_interface($this->GetInterface());
+ if ($this->GetBandwidth() && $this->GetBwscale())
+ $pfq_rule .= " bandwidth ".trim($this->GetBandwidth()).$this->GetBwscale();
+ $tmpvalue = $this->GetQpriority();
+ if (!empty($tmpvalue))
+ $pfq_rule .= " priority " . $this->GetQpriority();
+ $tmpvalue = trim($this->GetQlimit());
+ if (!empty($tmpvalue))
+ $pfq_rule .= " qlimit " . $this->GetQlimit();
+ if ($this->GetDefault() || $this->GetRed() || $this->GetRio() || $this->GetEcn() || $this->GetBorrow()) {
+ $pfq_rule .= " cbq ( ";
+ $tmpvalue = trim($this->GetRed());
+ if (!empty($tmpvalue)) {
+ $comma = 1;
+ $pfq_rule .= " red ";
+ }
+ $tmpvalue = trim($this->GetRio());
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " rio ";
+ }
+ $tmpvalue = trim($this->GetEcn());
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " ecn ";
+ }
+ $tmpvalue = trim($this->GetDefault());
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= " ,";
+ $comma = 1;
+ $pfq_rule .= " default ";
}
+ $tmpvalue = trim($this->GetBorrow());
+ if (!empty($tmpvalue)) {
+ if ($comma)
+ $pfq_rule .= ", ";
+ $pfq_rule .= " borrow ";
+ }
+ $pfq_rule .= " ) ";
+ }
+ if (count($this->subqueues)) {
+ $i = count($this->subqueues);
+ $pfq_rule .= " { ";
+ foreach ($this->subqueues as $qkey => $qnone) {
+ if ($i > 1) {
+ $i--;
+ $pfq_rule .= " {$qkey}, ";
+ } else
+ $pfq_rule .= " {$qkey} ";
+ }
+ $pfq_rule .= " } \n";
+ foreach ($this->subqueues as $q)
+ $pfq_rule .= $q->build_rules();
+ }
- $pfq_rule .= " \n";
- return $pfq_rule;
+ $pfq_rule .= " \n";
+ return $pfq_rule;
}
function build_form() {
@@ -2075,28 +2235,28 @@ class cbq_queue extends priq_queue {
$form .= "<td valign=\"top\" class=\"vncellreq\">Bandwidth</td>";
$form .= "<td class=\"vtable\"> <input name=\"bandwidth\" id=\"bandwidth\" class=\"formfld unknown\" value=\"";
if ($this->GetBandwidth() > 0)
- $form .= htmlspecialchars($this->GetBandwidth());
+ $form .= htmlspecialchars($this->GetBandwidth());
$form .= "\">";
$form .= "<select name=\"bandwidthtype\" id=\"bandwidthtype\" class=\"formselect\">";
$form .= "<option value=\"Gb\"";
if ($this->GetBwscale() == "Gb")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Gbit/s</option>";
$form .= "<option value=\"Mb\"";
if ($this->GetBwscale() == "Mb")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Mbit/s</option>";
$form .= "<option value=\"Kb\"";
if ($this->GetBwscale() == "Kb")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Kbit/s</option>";
$form .= "<option value=\"\"";
if ($this->GetBwscale() == "b")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Bit/s</option>";
$form .= "<option value=\"%\"";
if ($this->GetBwscale() == "%")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">%</option>";
$form .= "</select> <br>";
$form .= "<span class=\"vexpl\">Choose the amount of bandwidth for this queue";
@@ -2104,8 +2264,8 @@ class cbq_queue extends priq_queue {
$form .= parent::build_form();
$form .= "<tr><td class=\"vncellreq\">Scheduler specific options</td>";
$form .= "<td class=\"vtable\"><input type=\"checkbox\" id=\"borrow\" name=\"borrow\"";
- if($this->GetBorrow() == "on")
- $form .= " CHECKED ";
+ if($this->GetBorrow() == "on")
+ $form .= " CHECKED ";
$form .= "> Borrow from other queues when available<br></td></tr>";
return $form;
@@ -2117,27 +2277,45 @@ class cbq_queue extends priq_queue {
function wconfig() {
$cflink =& get_reference_to_me_in_config($this->GetLink());
- if (!is_array($cflink))
- $cflink = array();
- $cflink['interface'] = $this->GetInterface();
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['priority'] = $this->GetQpriority();
- $cflink['name'] = $this->GetQname();
- $cflink['description'] = $this->GetDescription();
- $cflink['bandwidth'] = $this->GetBandwidth();
- $cflink['bandwidthtype'] = $this->GetBwscale();
- $cflink['enabled'] = $this->GetEnabled();
- $cflink['default'] = $this->GetDefault();
- $cflink['red'] = $this->GetRed();
- $cflink['rio'] = $this->GetRio();
- $cflink['ecn'] = $this->GetEcn();
- $cflink['borrow'] = $this->GetBorrow();
- }
+ if (!is_array($cflink))
+ $cflink = array();
+ $cflink['interface'] = $this->GetInterface();
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($cflink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['priority'] = $this->GetQpriority();
+ if (empty($cflink['priority']))
+ unset($cflink['priority']);
+ $cflink['name'] = $this->GetQname();
+ $cflink['description'] = $this->GetDescription();
+ if (empty($cflink['description']))
+ unset($cflink['description']);
+ $cflink['bandwidth'] = $this->GetBandwidth();
+ $cflink['bandwidthtype'] = $this->GetBwscale();
+ $cflink['enabled'] = trim($this->GetEnabled());
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
+ $cflink['default'] = trim($this->GetDefault());
+ if (empty($cflink['default']))
+ unset($cflink['default']);
+ $cflink['red'] = trim($this->GetRed());
+ if (empty($cflink['red']))
+ unset($cflink['red']);
+ $cflink['rio'] = trim($this->GetRio());
+ if (empty($cflink['rio']))
+ unset($cflink['rio']);
+ $cflink['ecn'] = trim($this->GetEcn());
+ if (empty($cflink['ecn']))
+ unset($cflink['ecn']);
+ $cflink['borrow'] = trim($this->GetBorrow());
+ if (empty($cflink['borrow']))
+ unset($cflink['borrow']);
+ }
}
class fairq_queue extends priq_queue {
- var $hogs;
- var $buckets;
+ var $hogs;
+ var $buckets;
function GetBuckets() {
return $this->buckets;
@@ -2232,9 +2410,9 @@ class fairq_queue extends priq_queue {
function ReadConfig(&$q) {
parent::ReadConfig($q);
- if ($q['buckets'])
+ if (!empty($q['buckets']))
$this->SetBuckets($q['buckets']);
- if ($q['hogs'] && is_valid_shaperbw($q['hogs']))
+ if (!empty($q['hogs']) && is_valid_shaperbw($q['hogs']))
$this->SetHogs($q['hogs']);
}
@@ -2244,13 +2422,14 @@ class fairq_queue extends priq_queue {
function build_tree() {
$tree = " <li><a href=\"firewall_shaper.php?interface=" .
- $this->GetInterface()."&queue=" . $this->GetQname()."&action=show";
- $tree .= "\" ";
- if ($this->GetDefault())
- $tree .= " class=\"navlnk\"";
- $tree .= " >" . $this->GetQname() . "</a>";
- $tree .= "</li>";
- return $tree;
+ $this->GetInterface()."&queue=" . $this->GetQname()."&action=show";
+ $tree .= "\" ";
+ $tmpvalue = trim($this->GetDefault());
+ if (!empty($tmpvalue))
+ $tree .= " class=\"navlnk\"";
+ $tree .= " >" . $this->GetQname() . "</a>";
+ $tree .= "</li>";
+ return $tree;
}
/* Even this should take children into consideration */
@@ -2260,41 +2439,49 @@ class fairq_queue extends priq_queue {
$pfq_rule .= " on ".get_real_interface($this->GetInterface());
if ($this->GetBandwidth() && $this->GetBwscale())
$pfq_rule .= " bandwidth ".trim($this->GetBandwidth()).$this->GetBwscale();
- if ($this->GetQpriority())
+ $tmpvalue = trim($this->GetQpriority());
+ if (!empty($tmpvalue))
$pfq_rule .= " priority " . $this->GetQpriority();
- if ($this->GetQlimit())
+ $tmpvalue = trim($this->GetQlimit());
+ if (!empty($tmpvalue))
$pfq_rule .= " qlimit " . $this->GetQlimit();
if ($this->GetDefault() || $this->GetRed() || $this->GetRio()
|| $this->GetEcn() || $this->GetBuckets() || $this->GetHogs()) {
$pfq_rule .= " fairq ( ";
- if ($this->GetRed()) {
+ $tmpvalue = trim($this->GetRed());
+ if (!empty($tmpvalue)) {
$comma = 1;
$pfq_rule .= " red ";
}
- if ($this->GetRio()) {
+ $tmpvalue = trim($this->GetRio());
+ if (!empty($tmpvalue)) {
if ($comma)
$pfq_rule .= " ,";
$comma = 1;
$pfq_rule .= " rio ";
}
- if ($this->GetEcn()) {
+ $tmpvalue = trim($this->GetEcn());
+ if (!empty($tmpvalue)) {
if ($comma)
$pfq_rule .= " ,";
$comma = 1;
$pfq_rule .= " ecn ";
}
- if ($this->GetDefault()) {
+ $tmpvalue = trim($this->GetDefault());
+ if (!empty($tmpvalue)) {
if ($comma)
$pfq_rule .= " ,";
$comma = 1;
$pfq_rule .= " default ";
}
- if ($this->GetBuckets()) {
+ $tmpvalue = trim($this->GetBuckets());
+ if (!empty($tmpvalue)) {
if ($comma)
$pfq_rule .= ", ";
$pfq_rule .= " buckets " . $this->GetBuckets() . " ";
}
- if ($this->GetHogs()) {
+ $tmpvalue = trim($this->GetHogs());
+ if (!empty($tmpvalue)) {
if ($comma)
$pfq_rule .= ", ";
$pfq_rule .= " hogs " . $this->GetHogs() . " ";
@@ -2311,28 +2498,28 @@ class fairq_queue extends priq_queue {
$form .= "<td valign=\"top\" class=\"vncellreq\">Bandwidth</td>";
$form .= "<td class=\"vtable\"> <input name=\"bandwidth\" id=\"bandwidth\" class=\"formfld unknown\" value=\"";
if ($this->GetBandwidth() > 0)
- $form .= htmlspecialchars($this->GetBandwidth());
+ $form .= htmlspecialchars($this->GetBandwidth());
$form .= "\">";
$form .= "<select name=\"bandwidthtype\" id=\"bandwidthtype\" class=\"formselect\">";
$form .= "<option value=\"Gb\"";
if ($this->GetBwscale() == "Gb")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Gbit/s</option>";
$form .= "<option value=\"Mb\"";
if ($this->GetBwscale() == "Mb")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Mbit/s</option>";
$form .= "<option value=\"Kb\"";
if ($this->GetBwscale() == "Kb")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Kbit/s</option>";
$form .= "<option value=\"\"";
if ($this->GetBwscale() == "b")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">Bit/s</option>";
$form .= "<option value=\"%\"";
if ($this->GetBwscale() == "%")
- $form .= " selected=\"yes\"";
+ $form .= " selected=\"yes\"";
$form .= ">%</option>";
$form .= "</select> <br>";
$form .= "<span class=\"vexpl\">Choose the amount of bandwidth for this queue";
@@ -2341,12 +2528,14 @@ class fairq_queue extends priq_queue {
$form .= "<tr><td class=\"vncellreq\">Scheduler specific options</td>";
$form .= "<td class=\"vtable\"><table><tr><td>";
$form .= "<input id=\"buckets\" name=\"buckets\" value=\"";
- if($this->GetBuckets())
- $form .= $this->GetBuckets();
+ $tmpvalue = trim($this->GetBuckets());
+ if(!empty($tmpvalue))
+ $form .= $this->GetBuckets();
$form .= "\"> Number of buckets available.<br></td></tr>";
$form .= "<tr><td class=\"vtable\"><input id=\"hogs\" name=\"hogs\" value=\"";
- if($this->GetHogs())
- $form .= $this->GetHogs();
+ $tmpvalue = trim($this->GetHogs());
+ if(!empty($tmpvalue))
+ $form .= $this->GetHogs();
$form .= "\"> Bandwidth limit for hosts to not saturate link.<br></td></tr>";
$form .= "</table></td></tr>";
return $form;
@@ -2361,19 +2550,39 @@ class fairq_queue extends priq_queue {
if (!is_array($cflink))
$cflink = array();
$cflink['interface'] = $this->GetInterface();
- $cflink['qlimit'] = $this->GetQlimit();
- $cflink['priority'] = $this->GetQpriority();
+ $cflink['qlimit'] = trim($this->GetQlimit());
+ if (empty($cflink['qlimit']))
+ unset($cflink['qlimit']);
+ $cflink['priority'] = trim($this->GetQpriority());
+ if (empty($cflink['priority']))
+ unset($cflink['priority']);
$cflink['name'] = $this->GetQname();
- $cflink['description'] = $this->GetDescription();
+ $cflink['description'] = trim($this->GetDescription());
+ if (empty($cflink['description']))
+ unset($cflink['description']);
$cflink['bandwidth'] = $this->GetBandwidth();
$cflink['bandwidthtype'] = $this->GetBwscale();
$cflink['enabled'] = $this->GetEnabled();
- $cflink['default'] = $this->GetDefault();
- $cflink['red'] = $this->GetRed();
- $cflink['rio'] = $this->GetRio();
- $cflink['ecn'] = $this->GetEcn();
- $cflink['buckets'] = $this->GetBuckets();
- $cflink['hogs'] = $this->GetHogs();
+ if (empty($cflink['enabled']))
+ unset($cflink['enabled']);
+ $cflink['default'] = trim($this->GetDefault());
+ if (empty($cflink['default']))
+ unset($cflink['default']);
+ $cflink['red'] = trim($this->GetRed());
+ if (empty($cflink['red']))
+ unset($cflink['red']);
+ $cflink['rio'] = trim($this->GetRio());
+ if (empty($cflink['rio']))
+ unset($cflink['rio']);
+ $cflink['ecn'] = trim($this->GetEcn());
+ if (empty($cflink['ecn']))
+ unset($cflink['ecn']);
+ $cflink['buckets'] = trim($this->GetBuckets());
+ if (empty($cflink['buckets']))
+ unset($cflink['buckets']);
+ $cflink['hogs'] = trim($this->GetHogs());
+ if (empty($cflink['hogs']))
+ unset($cflink['hogs']);
}
}
@@ -2390,12 +2599,12 @@ $dummynet_pipe_list = array();
class dummynet_class {
var $qname;
- var $qnumber; /* dummynet(4) uses numbers instead of names; maybe integrate with pf the same as altq does?! */
+ var $qnumber; /* dummynet(4) uses numbers instead of names; maybe integrate with pf the same as altq does?! */
var $qlimit;
var $description;
- var $qenabled;
- var $link;
- var $qparent; /* link to upper class so we do things easily on WF2Q+ rule creation */
+ var $qenabled;
+ var $link;
+ var $qparent; /* link to upper class so we do things easily on WF2Q+ rule creation */
var $plr;
var $buckets;
@@ -2410,28 +2619,28 @@ class dummynet_class {
function GetLink() {
return $this->link;
}
- function Getmask() {
- return $this->mask;
- }
- function SetMask($mask) {
- $this->mask = $mask;
- }
- function &GetParent() {
- return $this->qparent;
- }
- function SetParent(&$parent) {
- $this->qparent = &$parent;
- }
+ function Getmask() {
+ return $this->mask;
+ }
+ function SetMask($mask) {
+ $this->mask = $mask;
+ }
+ function &GetParent() {
+ return $this->qparent;
+ }
+ function SetParent(&$parent) {
+ $this->qparent = &$parent;
+ }
function GetEnabled() {
return $this->qenabled;
}
function SetEnabled($value) {
$this->qenabled = $value;
}
- function CanHaveChildren() {
- return false;
+ function CanHaveChildren() {
+ return false;
}
- function CanBeDeleted() {
+ function CanBeDeleted() {
return true;
}
function GetQname() {
@@ -2464,12 +2673,12 @@ class dummynet_class {
function SetBuckets($buckets) {
$this->buckets = $buckets;
}
- function SetNumber($number) {
- $this->qnumber = $number;
- }
- function GetNumber() {
- return $this->qnumber;
- }
+ function SetNumber($number) {
+ $this->qnumber = $number;
+ }
+ function GetNumber() {
+ return $this->qnumber;
+ }
function GetPlr() {
return $this->plr;
}
@@ -2477,29 +2686,29 @@ class dummynet_class {
$this->plr = $plr;
}
- function build_javascript() { return; } /* Do not remove */
+ function build_javascript() { return; } /* Do not remove */
- function validate_input($data, &$input_errors) {
- $reqdfields[] = "bandwidth";
- $reqdfieldsn[] = "Bandwidth";
- $reqdfields[] = "bandwidthtype";
- $reqdfieldsn[] = "Bandwidthtype";
- $reqdfields[] = "name";
- $reqdfieldsn[] = "Name";
-
- shaper_do_input_validation($data, $reqdfields, $reqdfieldsn, $input_errors);
-
- if ($data['plr'] && ((!is_numeric($data['plr'])) ||
- ($data['plr'] <= 0 && $data['plr'] > 1)))
- $input_errors[] = "Plr must be an integer between 1 and 100.";
- if (($data['buckets'] && (!is_numeric($data['buckets']))) ||
- ($data['buckets'] < 1 && $data['buckets'] > 100))
- $input_errors[] = "Buckets must be an integer between 16 and 65535.";
- if ($data['qlimit'] && (!is_numeric($data['qlimit'])))
- $input_errors[] = "Queue limit must be an integer";
+ function validate_input($data, &$input_errors) {
+ $reqdfields[] = "bandwidth";
+ $reqdfieldsn[] = "Bandwidth";
+ $reqdfields[] = "bandwidthtype";
+ $reqdfieldsn[] = "Bandwidthtype";
+ $reqdfields[] = "name";
+ $reqdfieldsn[] = "Name";
+
+ shaper_do_input_validation($data, $reqdfields, $reqdfieldsn, $input_errors);
+
+ if ($data['plr'] && ((!is_numeric($data['plr'])) ||
+ ($data['plr'] <= 0 && $data['plr'] > 1)))
+ $input_errors[] = "Plr must be an integer between 1 and 100.";
+ if (($data['buckets'] && (!is_numeric($data['buckets']))) ||
+ ($data['buckets'] < 1 && $data['buckets'] > 100))
+ $input_errors[] = "Buckets must be an integer between 16 and 65535.";
+ if ($data['qlimit'] && (!is_numeric($data['qlimit'])))
+ $input_errors[] = "Queue limit must be an integer";
if (!preg_match("/^[a-zA-Z0-9_-]+$/", $data['name']))
- $input_errors[] = "Queue names must be alphanumeric and _ or - only.";
- }
+ $input_errors[] = "Queue names must be alphanumeric and _ or - only.";
+ }
}
class dnpipe_class extends dummynet_class {
OpenPOWER on IntegriCloud