diff options
author | Bill Marquette <billm@pfsense.org> | 2005-06-06 02:32:36 +0000 |
---|---|---|
committer | Bill Marquette <billm@pfsense.org> | 2005-06-06 02:32:36 +0000 |
commit | e1654beaa9a12fb32e36c6417232a7fa69cfb92e (patch) | |
tree | 564ad4280bf108f396af0feb846c331f9d6e772d /etc | |
parent | bac1bccc1fc0d1db8169d681b23a77372f796599 (diff) | |
download | pfsense-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.inc | 52 |
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'] . "\" "; |