diff options
author | Ermal <eri@pfsense.org> | 2010-08-26 16:37:38 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2010-08-26 16:38:12 +0000 |
commit | e19b7d1ea849f40f1de194cadeefb3c289812442 (patch) | |
tree | 3cca6a4f1865575e039bb63c63a1084c8ff6486a /usr/local/www/firewall_virtual_ip.php | |
parent | 1bd4b4dcd97c2c77aa8900e3113d5050d44af469 (diff) | |
download | pfsense-e19b7d1ea849f40f1de194cadeefb3c289812442.zip pfsense-e19b7d1ea849f40f1de194cadeefb3c289812442.tar.gz |
Allow carp interfaces to sit on top of aliases. Also add safety belts to ipalias deletion for this to avoid breakage. Trigered-by: http://forum.pfsense.org/index.php/topic,27834.0.html
Diffstat (limited to 'usr/local/www/firewall_virtual_ip.php')
-rwxr-xr-x | usr/local/www/firewall_virtual_ip.php | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/usr/local/www/firewall_virtual_ip.php b/usr/local/www/firewall_virtual_ip.php index 1ccfc2a..ec15fdf 100755 --- a/usr/local/www/firewall_virtual_ip.php +++ b/usr/local/www/firewall_virtual_ip.php @@ -108,6 +108,15 @@ if ($_GET['act'] == "del") { } } + if ($a_vip[$_GET['id']]['mode'] == "proxyarp") { + $vipiface = $a_vip[$_GET['id']]['interface']; + foreach ($a_vip as $vip) { + if ($vip['interface'] == $vipiface && $vip['mode'] == "carp") + if (ip_in_subnet($vip['subnet'], gen_subnet($a_vip[$_GET['id']]['subnet'], $a_vip[$_GET['id']]['subnet_bits']) . "/" . $a_vip[$_GET['id']]['subnet_bits'])) + $input_errors[] = gettext("This entry cannot be deleted because it is still referenced by CARP") . " {$vip['descr']}."; + } + } + if (!$input_errors) { // Special case since every proxyarp vip is handled by the same daemon. if ($a_vip[$_GET['id']]['mode'] == "proxyarp") { |