summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorBill Marquette <billm@pfsense.org>2005-06-06 02:32:36 +0000
committerBill Marquette <billm@pfsense.org>2005-06-06 02:32:36 +0000
commite1654beaa9a12fb32e36c6417232a7fa69cfb92e (patch)
tree564ad4280bf108f396af0feb846c331f9d6e772d /etc
parentbac1bccc1fc0d1db8169d681b23a77372f796599 (diff)
downloadpfsense-e1654beaa9a12fb32e36c6417232a7fa69cfb92e.zip
pfsense-e1654beaa9a12fb32e36c6417232a7fa69cfb92e.tar.gz
Setup (more) correct default queues and ack queues to go along with them
Part of the master shaper ticket #121
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/filter.inc52
1 files changed, 42 insertions, 10 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 7684b06..8630a43 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -185,14 +185,34 @@ function filter_get_rule_interface($associatedrulenumber) {
return $config['shaper']['rule'][$associatedrulenumber]['interface'];
}
-function find_default_queue() {
+function find_default_queue($interface) {
global $config;
$qconfig = $config;
if (is_array($qconfig['shaper']['queue'])) {
- foreach ($qconfig['shaper']['queue'] as $rule) {
- if(isset($rule['defaultqueue']) and $rule['defaultqueue'] <> "")
- return $rule['name'];
+ foreach ($qconfig['shaper']['queue'] as $queue) {
+ if(isset($queue['defaultqueue']) and ($queue['defaultqueue'] <> "")) {
+ /* If this is a child queue */
+ if(isset($queue['attachtoqueue'])) {
+ if(is_subqueue_used_on_interface($queue['attachtoqueue'], $interface))
+ return $queue['name'];
+ } else
+ return $queue['name'];
+ }
+ }
+ }
+}
+
+function get_ack_queue($interface) {
+ global $config;
+ $qconfig = $config;
+
+ if (is_array($qconfig['shaper']['queue'])) {
+ foreach ($qconfig['shaper']['queue'] as $queue) {
+ if(isset($queue['ack']))
+ if(isset($queue['attachtoqueue']))
+ if(is_subqueue_used_on_interface($queue['attachtoqueue'], $interface))
+ return $queue['name'];
}
}
}
@@ -1717,13 +1737,17 @@ EOD;
* and setup for all netgraph interfaces
*/
$line = generate_user_filter_rule($rule, $xxx);
- $line .= " queue ({$queue['name']}, acks) ";
+ $ackq = get_ack_queue($rule['interface']);
+ if($ackq != "")
+ $line .= " queue ({$queue['name']}, {$ackq}) ";
if($line <> "")
$ipfrules .= $line . "\n";
}
} else {
$line = generate_user_filter_rule($rule, 0);
- $line .= " queue ({$queue['name']}, acks) ";
+ $ackq = get_ack_queue($rule['interface']);
+ if ($ackq != "")
+ $line .= " queue ({$queue['name']}, {$ackq}) ";
// label
if($rule['descr'] <> "" and $line <> "")
$line .= " label \"USER_RULE: " . $rule['descr'] . "\" ";
@@ -1751,16 +1775,24 @@ EOD;
*/
$line = generate_user_filter_rule($rule, $xxx);
if($line <> "") {
- if (isset($config['shaper']['enable']) && is_array($config['shaper']['queue']))
- $line .= " queue (" . find_default_queue() . ", acks) ";
+ if (isset($config['shaper']['enable']) && is_array($config['shaper']['queue'])) {
+ $defq = find_default_queue($rule['interface']);
+ $ackq = get_ack_queue($rule['interface']);
+ if (($defq != "") and ($ackq != ""))
+ $line .= " queue ({$defq}, {$ackq}) ";
+ }
$ipfrules .= $line . "\n";
}
}
} else {
$line = generate_user_filter_rule($rule, 0);
if($line <> "")
- if (isset($config['shaper']['enable']) && is_array($config['shaper']['queue']))
- $line .= " queue (" . find_default_queue() . ", acks) ";
+ if (isset($config['shaper']['enable']) && is_array($config['shaper']['queue'])) {
+ $defq = find_default_queue($rule['interface']);
+ $ackq = get_ack_queue($rule['interface']);
+ if (($defq != "") and ($ackq != ""))
+ $line .= " queue ({$defq}, {$ackq}) ";
+ }
// label
if($rule['descr'] <> "" and $line <> "")
$line .= " label \"USER_RULE: " . $rule['descr'] . "\" ";
OpenPOWER on IntegriCloud