summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorErmal Luçi <eri@pfsense.org>2009-07-23 21:44:05 +0000
committerErmal Luçi <eri@pfsense.org>2009-07-23 21:44:05 +0000
commit5e34cdb24e183ab797b05c6217678fe78211fbac (patch)
tree38ba35f9dc90dd829596bc44bfa4b4155f8f3aa2 /etc
parent7581a05043051f2cce37749a99d8c3d2e65db6c5 (diff)
downloadpfsense-5e34cdb24e183ab797b05c6217678fe78211fbac.zip
pfsense-5e34cdb24e183ab797b05c6217678fe78211fbac.tar.gz
* If editing an alias do not display itself on the autocompletion list
* Prevent that the user mixes wrong type of aliases, only host and network type mixing is allowed. Openvpn may be added later on too. * Instead of checking for nested loops when unwinding aliases just prevent the loops. It is easier and allows some rare cases when nesting is needed.
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/filter.inc20
1 files changed, 13 insertions, 7 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index d595560..df4a38b 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -356,16 +356,21 @@ function filter_generate_scrubing()
return $scrubrules;
}
-function filter_generate_nested_alias($alias) {
- global $aliastable;
+function filter_generate_nested_alias($name, $alias) {
+ global $aliastable, $aliasnesting;
$addresses = split(" ", $alias);
$finallist = "";
+ $aliasnesting[$name] = $name;
foreach ($addresses as $address) {
$linelength = strlen($finallist);
- if (isset($aliastable[$address]))
- $tmpline = filter_generate_nested_alias($aliastable[$address]);
- else
+ if (isset($aliastable[$address])) {
+ if (!isset($aliasnesting[$address]))
+ /* We already expanded this alias so there
+ * is no neccessity to do it again.
+ */
+ $tmpline = filter_generate_nested_alias($address, $aliastable[$address]);
+ } else
$tmpline = " $address";
if ((strlen($tmpline)+ $linelength) > 4036)
$finallist .= "\n";
@@ -375,7 +380,7 @@ function filter_generate_nested_alias($alias) {
}
function filter_generate_aliases() {
- global $config, $FilterIflist, $aliastable;
+ global $config, $FilterIflist, $aliastable, $aliasnesting;
if(isset($config['system']['developerspew'])) {
$mt = microtime();
echo "filter_generate_aliases() being called $mt\n";
@@ -394,7 +399,8 @@ function filter_generate_aliases() {
$extraalias = "";
$ip = find_interface_ip($aliased['address']);
$extraalias = " " . link_ip_to_carp_interface($ip);
- $addrlist = filter_generate_nested_alias($aliased['address']);
+ $aliasnesting = array();
+ $addrlist = filter_generate_nested_alias($aliased['name'], $aliased['address']);
if ($aliased['type'] == "host" || $aliased['type'] == "network") {
$aliases .= "table <{$aliased['name']}> { {$addrlist}{$extralias} } \n";
$aliases .= "{$aliased['name']} = \"<{$aliased['name']}>\"\n";
OpenPOWER on IntegriCloud