diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc index 5bccdb345..96493e94f 100644 --- a/src/etc/inc/filter.inc +++ b/src/etc/inc/filter.inc @@ -1664,8 +1664,8 @@ function filter_nat_rules_generate(&$FilterIflist) if (!isset($FilterIflist[$natif])) { continue; } - $srcaddr = filter_generate_address($rule, 'source'); - $dstaddr = filter_generate_address($rule, 'destination'); + $srcaddr = filter_generate_address($FilterIflist, $rule, 'source'); + $dstaddr = filter_generate_address($FilterIflist, $rule, 'destination'); if(!$dstaddr) { $dstaddr = $FilterIflist[$natif]['ip']; } @@ -1719,8 +1719,8 @@ function filter_nat_rules_generate(&$FilterIflist) if (!isset($FilterIflist[$natif])) { continue; } - $srcaddr = filter_generate_address($rule, 'source'); - $dstaddr = filter_generate_address($rule, 'destination'); + $srcaddr = filter_generate_address($FilterIflist, $rule, 'source'); + $dstaddr = filter_generate_address($FilterIflist, $rule, 'destination'); $srcaddr = trim($srcaddr); $dstaddr = trim($dstaddr); @@ -1999,8 +1999,8 @@ function filter_nat_rules_generate(&$FilterIflist) if (!isset($FilterIflist[$natif])) { continue; } - $srcaddr = filter_generate_address($rule, 'source', true); - $dstaddr = filter_generate_address($rule, 'destination', true); + $srcaddr = filter_generate_address($FilterIflist, $rule, 'source', true); + $dstaddr = filter_generate_address($FilterIflist, $rule, 'destination', true); $srcaddr = trim($srcaddr); $dstaddr = trim($dstaddr); @@ -2229,10 +2229,11 @@ function filter_address_add_vips_subnets(&$subnets, $if, $not) { } } -function filter_generate_address(& $rule, $target = "source", $isnat = false) { +function filter_generate_address(&$FilterIflist, &$rule, $target = 'source', $isnat = false) +{ global $config; - $FilterIflist = filter_generate_optcfg_array() ; - $src = ""; + + $src = ''; if(isset($rule[$target]['any'])) { $src = "any"; @@ -2558,7 +2559,7 @@ function filter_generate_user_rule(&$FilterIflist, $rule) update_filter_reload_status(sprintf(gettext("Creating rule %s"), $rule['descr'])); /* source address */ - $src = trim(filter_generate_address($rule, "source")); + $src = trim(filter_generate_address($FilterIflist, $rule, "source")); if (empty($src) || ($src == "/")) { return "# at the break!"; } @@ -2570,7 +2571,7 @@ function filter_generate_user_rule(&$FilterIflist, $rule) } /* destination address */ - $dst = trim(filter_generate_address($rule, "destination")); + $dst = trim(filter_generate_address($FilterIflist, $rule, "destination")); if (empty($dst) || ($dst == "/")) { return "# returning at dst $dst == \"/\""; } diff --git a/src/etc/inc/openvpn-client-export.inc b/src/etc/inc/openvpn-client-export.inc index 0281e38d6..d1e04981e 100644 --- a/src/etc/inc/openvpn-client-export.inc +++ b/src/etc/inc/openvpn-client-export.inc @@ -869,7 +869,7 @@ function openvpn_client_export_find_port_forwards($targetip, $targetport, $targe continue; // Skip if there is no interface } - $dstaddr = trim(filter_generate_address($natent, 'destination', true)); + $dstaddr = trim(filter_generate_address($FilterIflist, $natent, 'destination', true)); if (!$dstaddr) { $dstaddr = $FilterIflist[$natif]['ip']; }