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 27570965f..90f55638e 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml
@@ -154,6 +154,16 @@
State Timeout in seconds (TCP only)
true
+
+ rule.max
+
+ text
+
+ Limits the number of concurrent states the rule may create.
+ When this limit is reached, further packets that would create state are dropped until existing states time out.
+
+ true
+
rule.max-src-nodes
diff --git a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php
index 785c8330c..0b5bd7448 100644
--- a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php
+++ b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php
@@ -118,11 +118,15 @@ class Filter extends BaseModel
$rule->interfacenot->__reference
));
}
- if ($rule->statetype == 'none' && !empty((string)$rule->statetimeout)) {
- $messages->appendMessage(new Message(
- gettext("You cannot specify the state timeout (advanced option) if statetype is none."),
- $rule->statetimeout->__reference
- ));
+ if ($rule->statetype == 'none') {
+ foreach (['statetimeout', 'max', 'max-src-states', 'max-src-nodes'] as $fieldname) {
+ if (!empty((string)$rule->$fieldname)) {
+ $messages->appendMessage(new Message(
+ gettext("Invalid option when statetype is none."),
+ $rule->$fieldname->__reference
+ ));
+ }
+ }
}
if (!in_array($rule->protocol, ['TCP', 'TCP/UDP']) && !empty((string)$rule->statetimeout)) {
$messages->appendMessage(new Message(
diff --git a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
index 20a0b439f..75e2274e5 100644
--- a/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
+++ b/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
@@ -148,6 +148,9 @@
1
+
+ 1
+