From 5eaa7fc19d374d4fb2e2961953893557fe2e24db Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Sat, 28 Dec 2024 18:28:38 +0100 Subject: [PATCH] Firewall: Automation: Filter - add set-prio[-low] for https://github.com/opnsense/core/issues/8143 --- .../Firewall/forms/dialogFilterRule.xml | 24 +++++++++++++++++ .../app/models/OPNsense/Firewall/Filter.php | 12 ++++++++- .../app/models/OPNsense/Firewall/Filter.xml | 26 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml b/src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml index 249796623..d647d71d6 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml +++ b/src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml @@ -240,4 +240,28 @@ Determines how packets route back in the opposite direction (replies), when set to default, packets on WAN type interfaces reply to their connected gateway on the interface (unless globally disabled). A specific gateway may be chosen as well here. This setting is only relevant in the context of a state, for stateless rules there is no defined opposite direction. + + header + + + + rule.set-prio + + dropdown + + Packets matching this rule will be assigned a specific queueing priority. If the + packet is transmitted on a vlan(4) interface, the queueing priority + will be written as the priority code point in the 802.1Q VLAN + header + + + + rule.set-prio-low + + dropdown + + Used in combination with set priority, packets which have a TOS of lowdelay and TCP ACKs with no + data payload will be assigned this priority when offered. + + diff --git a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php index 0bcfbff11..3d1b2c55c 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php +++ b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php @@ -143,7 +143,8 @@ class Filter extends BaseModel } if (empty((string)$rule->max) && ($rule->adaptivestart == '0' || $rule->adaptiveend == '0')) { $messages->appendMessage(new Message( - gettext('Disabling adaptive timeouts is only supported in combination with a configured maximum number of states for the same rule.'), + gettext('Disabling adaptive timeouts is only supported in ". + "combination with a configured maximum number of states for the same rule.'), $rule->max->__reference )); } elseif ($rule->adaptivestart == '0' xor $rule->adaptiveend == '0') { @@ -175,6 +176,15 @@ class Filter extends BaseModel $rule->adaptiveend->__reference )); } + + if ((string)$rule->{'set-prio'} == '' && (string)$rule->{'set-prio-low'} != '') { + $messages->appendMessage(new Message( + gettext("Set priority for low latency and acknowledgements ". + "requires a set priority for normal packets."), + $rule->{'set-prio-low'}->__reference + )); + } + } } } diff --git a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml index 007ce0e83..ef4b624d9 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml @@ -164,6 +164,32 @@ 0 + + Keep current priority + + Background (1, lowest) + Best Effort (0, default) + Excellent Effort (2) + Critical Applications (3) + Video (4) + Voice (5) + Internetwork Control (6) + Network Control (7, highest) + + + + Keep current priority + + Background (1, lowest) + Best Effort (0, default) + Excellent Effort (2) + Critical Applications (3) + Video (4) + Voice (5) + Internetwork Control (6) + Network Control (7, highest) + +