diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 8df1e389d0..a67b0e38e7 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -1334,6 +1334,13 @@ function generate_user_filter_rule($rule, $ngcounter) {
$src = "{$pppoesa}/{$pppoesn}";
break;
}
+ /* check for opt$NUMip here */
+ $matches = "";
+ if (preg_match("/opt([0-9999])ip/", $rule['source']['network'], $matches)) {
+ $optnum = $matches[0];
+ $real_int = convert_friendly_interface_to_real_interface_name("opt{$optnum}");
+ $dst = find_interface_ip($real_int);
+ }
if (isset($rule['source']['not'])) $src = "!{$src}";
}
} else if ($rule['source']['address']) {
@@ -1426,6 +1433,13 @@ function generate_user_filter_rule($rule, $ngcounter) {
$dst = "{$ppoesa}/{$pppoesn}";
break;
}
+ /* check for opt$NUMip here */
+ $matches = "";
+ if (preg_match("/opt([0-9999])ip/", $rule['destination']['network'], $matches)) {
+ $optnum = $matches[0];
+ $real_int = convert_friendly_interface_to_real_interface_name("opt{$optnum}");
+ $dst = find_interface_ip($real_int);
+ }
if (isset($rule['destination']['not'])) $dst = " !{$dst}";
}
} else if ($rule['destination']['address']) {
diff --git a/usr/local/www/firewall_rules_edit.php b/usr/local/www/firewall_rules_edit.php
index ec1e8d5d45..5d781e3a2e 100755
--- a/usr/local/www/firewall_rules_edit.php
+++ b/usr/local/www/firewall_rules_edit.php
@@ -567,6 +567,9 @@ include("head.inc");
+