mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
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:
parent
58c32a28e6
commit
191ed731c7
@ -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 = "";
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user