diff --git a/net/firewall/Makefile b/net/firewall/Makefile
index eec978a63..4b2543eaa 100644
--- a/net/firewall/Makefile
+++ b/net/firewall/Makefile
@@ -1,6 +1,5 @@
PLUGIN_NAME= firewall
-PLUGIN_VERSION= 1.4
-PLUGIN_REVISION= 3
+PLUGIN_VERSION= 1.5
PLUGIN_COMMENT= Firewall API supplemental package
PLUGIN_OBSOLETE= yes
PLUGIN_MAINTAINER= ad@opnsense.org
diff --git a/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/FilterController.php b/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/FilterController.php
index 461f990a5..e558fe813 100644
--- a/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/FilterController.php
+++ b/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/FilterController.php
@@ -32,6 +32,7 @@ class FilterController extends \OPNsense\Base\IndexController
public function indexAction()
{
$this->view->pick('OPNsense/Firewall/filter');
+ $this->view->SavePointBtns = true;
$this->view->ruleController = "filter";
$this->view->gridFields = [
[
diff --git a/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/NptController.php b/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/NptController.php
index 0e69ca4fe..d701a8003 100644
--- a/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/NptController.php
+++ b/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/NptController.php
@@ -33,7 +33,6 @@ class NptController extends \OPNsense\Base\IndexController
{
$this->view->pick('OPNsense/Firewall/filter');
$this->view->ruleController = "npt";
- $this->view->hideSavePointBtns = true;
$this->view->gridFields = [
[
'id' => 'enabled', 'formatter' => 'rowtoggle' ,'width' => '6em', 'heading' => gettext('Enabled')
diff --git a/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/SourceNatController.php b/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/SourceNatController.php
index 7bc2c632f..9e24cc700 100644
--- a/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/SourceNatController.php
+++ b/net/firewall/src/opnsense/mvc/app/controllers/OPNsense/Firewall/SourceNatController.php
@@ -32,6 +32,7 @@ class SourceNatController extends \OPNsense\Base\IndexController
public function indexAction()
{
$this->view->pick('OPNsense/Firewall/filter');
+ $this->view->SavePointBtns = true;
$this->view->ruleController = "source_nat";
$this->view->gridFields = [
[
diff --git a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/ACL/ACL.xml b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/ACL/ACL.xml
index 070ce99e9..c8a66f358 100644
--- a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/ACL/ACL.xml
+++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/ACL/ACL.xml
@@ -1,16 +1,23 @@
- Firewall: Rules: API
+ Firewall: Automation: Filter
ui/firewall/filter/*
api/firewall/filter/*
- Firewall: SourceNat: API
+ Firewall: Automation: Source NAT
ui/firewall/source_nat/*
api/firewall/source_nat/*
+
+ Firewall: Automation: NPTv6
+
+ ui/firewall/npt/*
+ api/firewall/npt/*
+
+
diff --git a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php
index 70996125e..a3c69c53c 100644
--- a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php
+++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php
@@ -1,31 +1,29 @@
object();
+
// standard model validations
$messages = parent::performValidation($validateFullModel);
foreach ([$this->rules->rule, $this->snatrules->rule] as $rules) {
@@ -95,18 +97,35 @@ class Filter extends BaseModel
}
}
}
+
foreach ($this->npt->rule->iterateItems() as $rule) {
if ($validateFullModel || $rule->isFieldChanged()) {
- if (!empty((string)$rule->destination_net) && !empty((string)$rule->trackif)) {
- $messages->appendMessage(new Message(
- gettext("A track interface is only allowed without an extrenal prefix."),
- $rule->trackif->__reference
- ));
+ if (!empty((string)$rule->trackif)) {
+ if (!empty((string)$rule->destination_net)) {
+ $messages->appendMessage(new Message(
+ gettext('A track interface is only allowed without an external prefix.'),
+ $rule->trackif->__reference
+ ));
+ }
+
+ if (
+ (empty($config->interfaces->{$rule->interface}->ipaddrv6) ||
+ $config->interfaces->{$rule->interface}->ipaddrv6 != 'dhcp6') ||
+ empty($config->interfaces->{$rule->trackif}->{'track6-interface'}) ||
+ $config->interfaces->{$rule->trackif}->{'track6-interface'} != (string)$rule->interface
+ ) {
+ $messages->appendMessage(new Message(
+ gettext('This interface is not tracking the current rule interface.'),
+ $rule->trackif->__reference
+ ));
+ }
}
+
if (!empty((string)$rule->destination_net) && !empty((string)$rule->source_net)) {
- $dparts = explode('/', (string)$rule->destination_net);
- $sparts = explode('/', (string)$rule->source_net);
- if (count($dparts) == 2 && count($sparts) == 2 && $dparts[1] != $sparts[1]) {
+ /* defaults to /128 */
+ $dparts = explode('/', (string)$rule->destination_net . '/128');
+ $sparts = explode('/', (string)$rule->source_net . '/128');
+ if ($dparts[1] != $sparts[1]) {
$messages->appendMessage(new Message(
gettext("External subnet should match internal subnet."),
$rule->destination_net->__reference
diff --git a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
index 3e93bded0..dc7399beb 100644
--- a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
+++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
@@ -33,7 +33,6 @@
Y
- N
Y
Y
@@ -67,7 +66,6 @@
Y
- N
Y
Y
Y
@@ -83,14 +81,12 @@
Y
- N
Y
Y
Y
Please specify a valid portnumber, name, alias or range
- N
interface gateways list
/tmp/gateway_list.json
20
@@ -161,7 +157,6 @@
Y
- N
Y
Y
Y
@@ -176,7 +171,6 @@
Y
- N
Y
Y
Y
@@ -187,7 +181,6 @@
Y
- N
Y
Y
@@ -238,12 +231,12 @@
Y
ipv6
- Y
+ N
N
ipv6
- Y
+ N
N
diff --git a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Menu/Menu.xml b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Menu/Menu.xml
index 476e1f38b..455d06546 100644
--- a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Menu/Menu.xml
+++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Menu/Menu.xml
@@ -1,13 +1,13 @@