Firewall: NAT: One-to-One - move rule logic into serialize() action for https://github.com/opnsense/core/issues/7250

(same effect as 2073b7533e)
This commit is contained in:
Ad Schellevis 2024-07-10 19:46:54 +02:00
parent b767d8b4d5
commit c0167704c3
2 changed files with 7 additions and 7 deletions

View File

@ -182,12 +182,7 @@ function pf_firewall($fw)
}
foreach ($mdlFilter->onetoone->rule->sortedBy(['sequence']) as $key => $rule) {
$rule_a = $rule->serialize();
/* XXX the default value merge will fail if the empty default is kept */
if (isset($rule_a['natreflection']) && $rule_a['natreflection'] == '') {
unset($rule_a['natreflection']);
}
$fw->registerDNatRule(500, $rule_a);
$fw->registerDNatRule(500, $rule->serialize());
}
foreach ($mdlFilter->npt->rule->sortedBy(['sequence']) as $key => $rule) {

View File

@ -65,7 +65,12 @@ class SourceNatRuleContainerField extends ContainerField
if ((string)$node != 'any') {
$result[$target_fieldname] = (string)$node;
}
} else {
} elseif ((string)$node != '') {
/*
* XXX: Omit empty values to allow array_merge() to overlay default values in Plugin.php.
* In the long run its likely better to move default values inside serialize() action for
* clarity, but that only makes sense if legacy components are gone.
**/
$result[$target_fieldname] = (string)$node;
}
}