summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/filter.inc20
1 files changed, 11 insertions, 9 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 194f8d8..23bce61 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -2236,12 +2236,13 @@ function filter_generate_address(& $rule, $target = "source", $isnat = false) {
if(strstr($rule[$target]['network'], "opt")) {
$optmatch = "";
$matches = "";
- if($rule['ipprotocol'] == "inet6") {
- if(preg_match("/opt([0-9]*)$/", $rule[$target]['network'], $optmatch)) {
- $opt_ip = $FilterIflist["opt{$optmatch[1]}"]['ipv6'];
- if(!is_ipaddrv6($opt_ip))
+ if ($rule['ipprotocol'] == "inet6") {
+ if (preg_match("/opt([0-9]*)$/", $rule[$target]['network'], $optmatch)) {
+ $opt_sa = $FilterIflist["opt{$optmatch[1]}"]['sav6'];
+ if (!is_ipaddrv6($opt_sa)) {
return "";
- $src = $opt_ip . "/" . $FilterIflist["opt{$optmatch[1]}"]['snv6'];
+ }
+ $src = $opt_sa . "/" . $FilterIflist["opt{$optmatch[1]}"]['snv6'];
/* check for opt$NUMip here */
} else if(preg_match("/opt([0-9]*)ip/", $rule[$target]['network'], $matches)) {
$src = $FilterIflist["opt{$matches[1]}"]['ipv6'];
@@ -2251,11 +2252,12 @@ function filter_generate_address(& $rule, $target = "source", $isnat = false) {
$src = " !{$src}";
}
} else {
- if(preg_match("/opt([0-9]*)$/", $rule[$target]['network'], $optmatch)) {
- $opt_ip = $FilterIflist["opt{$optmatch[1]}"]['ip'];
- if(!is_ipaddrv4($opt_ip))
+ if (preg_match("/opt([0-9]*)$/", $rule[$target]['network'], $optmatch)) {
+ $opt_sa = $FilterIflist["opt{$optmatch[1]}"]['sa'];
+ if (!is_ipaddrv4($opt_sa)) {
return "";
- $src = $opt_ip . "/" . $FilterIflist["opt{$optmatch[1]}"]['sn'];
+ }
+ $src = $opt_sa . "/" . $FilterIflist["opt{$optmatch[1]}"]['sn'];
/* check for opt$NUMip here */
} else if(preg_match("/opt([0-9]*)ip/", $rule[$target]['network'], $matches)) {
$src = $FilterIflist["opt{$matches[1]}"]['ip'];
OpenPOWER on IntegriCloud