summaryrefslogtreecommitdiffstats
path: root/etc/inc/filter.inc
diff options
context:
space:
mode:
authorRenato Botelho <garga@FreeBSD.org>2014-11-05 15:31:31 -0200
committerRenato Botelho <garga@FreeBSD.org>2014-11-05 15:31:31 -0200
commitd9b05eb490ab4d31a132c3e993bd560933eadd8c (patch)
tree538e32ed47e73cf60d728e46e3f04164609cee9e /etc/inc/filter.inc
parent87d4456cf4a98aa306452fd4728720f3d8238244 (diff)
downloadpfsense-d9b05eb490ab4d31a132c3e993bd560933eadd8c.zip
pfsense-d9b05eb490ab4d31a132c3e993bd560933eadd8c.tar.gz
When an alias contain hosts, add IPs and networks to filterdns too, otherwise you end up with a pre-defined and non-persistent table. Fixes #3939
Diffstat (limited to 'etc/inc/filter.inc')
-rw-r--r--etc/inc/filter.inc16
1 files changed, 15 insertions, 1 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index cb4bfd0..8c76128 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -476,6 +476,7 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
global $aliastable, $filterdns;
$addresses = explode(" ", $alias);
+ $use_filterdns = false;
$finallist = "";
$builtlist = "";
$urltable_nesting = "";
@@ -506,8 +507,10 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
$tmpline = filter_generate_nested_alias($name, $aliastable[$address], $aliasnesting, $aliasaddrnesting);
} else if(!isset($aliasaddrnesting[$address])) {
if (!is_ipaddr($address) && !is_subnet($address) && !is_port($address) && !is_portrange($address) && is_hostname($address)) {
- if (!isset($filterdns["{$address}{$name}"]))
+ if (!isset($filterdns["{$address}{$name}"])) {
+ $use_filterdns = true;
$filterdns["{$address}{$name}"] = "pf {$address} {$name}\n";
+ }
continue;
}
$aliasaddrnesting[$address] = $address;
@@ -521,6 +524,17 @@ function filter_generate_nested_alias($name, $alias, &$aliasnesting, &$aliasaddr
$builtlist .= " {$tmpline}";
}
$finallist .= $builtlist;
+
+ if ($use_filterdns === true && !empty($finallist)) {
+ foreach (explode(" ", $finallist) as $address) {
+ if (empty($address))
+ continue;
+ if ((is_ipaddr($address) || is_subnet($address)) && !isset($filterdns["{$address}{$name}"]))
+ $filterdns["{$address}{$name}"] = "pf {$address} {$name}\n";
+ }
+ $finallist = '';
+ }
+
return $finallist;
}
OpenPOWER on IntegriCloud