Fixes #1341. If a table has not entries it is marked as persist and pf(4) does not clear its contents. Schedule a table flush for these tables after filter reload to make sure an entry is not forgotten.

This commit is contained in:
Ermal 2011-06-08 19:53:54 +00:00
parent 92ca32ccbe
commit c7422829b2

View File

@ -504,11 +504,13 @@ function filter_expand_alias($alias_name)
}
function filter_generate_aliases() {
global $config, $FilterIflist;
global $config, $FilterIflist, $after_filter_configure_run;
if(isset($config['system']['developerspew'])) {
$mt = microtime();
echo "filter_generate_aliases() being called $mt\n";
}
$alias = "#System aliases\n ";
$aliases = "loopback = \"{ lo0 }\"\n";
@ -554,9 +556,10 @@ function filter_generate_aliases() {
case "network":
case "url":
$tableaddrs = "{$addrlist}{$extralias}";
if(empty($tableaddrs))
if(empty($tableaddrs)) {
$aliases .= "table <{$aliased['name']}> persist\n";
else
$after_filter_configure_run[] = "/sbin/pfctl -T flush -t " . escapeshellarg($aliased['name']);
} else
$aliases .= "table <{$aliased['name']}> { {$addrlist}{$extralias} } \n";
$aliases .= "{$aliased['name']} = \"<{$aliased['name']}>\"\n";