MFC 11604

Don't create a pass out rule for a queue if it is not on an interface or not used in a rule. This will cut queue pass out rules by the number of interfaces enabled.
This commit is contained in:
Scott Ullrich 2006-04-19 03:59:35 +00:00
parent 58c32a28e6
commit 191ed731c7
2 changed files with 7 additions and 3 deletions

View File

@ -2159,6 +2159,8 @@ function create_firewall_outgoing_rules_to_itself() {
$defq = find_default_queue($ifname);
/* Handle all tagged packets */
foreach ($config['shaper']['queue'] as $queue) {
if(!filter_is_queue_being_used_on_interface($queue['name'], $ifname, 'out'))
continue;
if ($ackq == "" || $defq == "") {
/* Shaper must not be enabled on this interface */
$q = "";

View File

@ -180,13 +180,15 @@ function is_subqueue_used_on_interface($queuename, $interface) {
return 0;
}
function filter_is_queue_being_used_on_interface($queuename, $interface) {
function filter_is_queue_being_used_on_interface($queuename, $interface, $direction = 'in') {
global $config;
$lconfig = $config;
if(!is_array($lconfig['shaper']['rule'])) return null;
foreach($lconfig['shaper']['rule'] as $rule) {
if(($rule['inqueue'] == $queuename && $rule['in-interface'] == $interface))
$q = $direction . 'queue';
$if = $direction . '-interface';
if(($rule[$q] == $queuename && $rule[$if] == $interface))
return $interface;
}
return null;
@ -660,4 +662,4 @@ function filter_generate_pf_altq_rules() {
return $shaperrules;
}
?>
?>