summaryrefslogtreecommitdiffstats
path: root/usr/local/www/xmlrpc.php
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2012-04-05 20:13:44 +0000
committerErmal <eri@pfsense.org>2012-04-05 20:22:01 +0000
commit7b47bd4c3ce792e94eca430f22891eb1dd36bb3c (patch)
tree8c983217d31e50eda49d5622d30616d2bab91704 /usr/local/www/xmlrpc.php
parentc1a104c7c8cc61d103fe6eba8dd98a071074b4ec (diff)
downloadpfsense-7b47bd4c3ce792e94eca430f22891eb1dd36bb3c.zip
pfsense-7b47bd4c3ce792e94eca430f22891eb1dd36bb3c.tar.gz
Make vips vhid be unique per parent interface!
Diffstat (limited to 'usr/local/www/xmlrpc.php')
-rwxr-xr-xusr/local/www/xmlrpc.php22
1 files changed, 11 insertions, 11 deletions
diff --git a/usr/local/www/xmlrpc.php b/usr/local/www/xmlrpc.php
index 1554e70..88138ea 100755
--- a/usr/local/www/xmlrpc.php
+++ b/usr/local/www/xmlrpc.php
@@ -182,13 +182,13 @@ function restore_config_section_xmlrpc($raw_params) {
$vipbackup = array();
$oldvips = array();
if (isset($params[0]['virtualip'])) {
- if(is_array($config['virtualip']['vip'])) {
+ if (is_array($config['virtualip']['vip'])) {
foreach ($config['virtualip']['vip'] as $vipindex => $vip) {
if ($vip['mode'] == "carp")
- $oldvips[$vip['vhid']] = "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}";
- else if ($vip['mode'] == "ipalias" && substr($vip['interface'], 0, 3) == "vip")
+ $oldvips["{$vip['interface']}_vip{$vip['vhid']}"] = "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}";
+ else if ($vip['mode'] == "ipalias" && strstr($vip['interface'], "_vip"))
$oldvips[$vip['subnet']] = "{$vip['interface']}{$vip['subnet']}{$vip['subnet_bits']}";
- else if (($vip['mode'] == "ipalias" || $vip['mode'] == 'proxyarp') && substr($vip['interface'], 0, 3) != "vip")
+ else if (($vip['mode'] == "ipalias" || $vip['mode'] == 'proxyarp') && !strstr($vip['interface'], "_vip"))
$vipbackup[] = $vip;
}
}
@@ -219,15 +219,15 @@ function restore_config_section_xmlrpc($raw_params) {
$carp_setuped = false;
$anyproxyarp = false;
foreach ($config['virtualip']['vip'] as $vip) {
- if ($vip['mode'] == "carp" && isset($oldvips[$vip['vhid']])) {
- if ($oldvips[$vip['vhid']] == "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}") {
+ if ($vip['mode'] == "carp" && isset($oldvips["{$vip['interface']}_vip{$vip['vhid']}"])) {
+ if ($oldvips["{$vip['interface']}_vip{$vip['vhid']}"] == "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}") {
if (does_vip_exist($vip)) {
- unset($oldvips[$vip['vhid']]);
+ unset($oldvips["{$vip['interface']}_vip{$vip['vhid']}"]);
continue; // Skip reconfiguring this vips since nothing has changed.
}
}
- unset($oldvips[$vip['vhid']]);
- } else if ($vip['mode'] == "ipalias" && substr($vip['interface'], 0, 3) == "vip" && isset($oldvips[$vip['subnet']])) {
+ unset($oldvips["{$vip['interface']}_vip{$vip['vhid']}"]);
+ } else if ($vip['mode'] == "ipalias" && strstr($vip['interface'], "_vip") && isset($oldvips[$vip['subnet']])) {
if ($oldvips[$vip['subnet']] = "{$vip['interface']}{$vip['subnet']}{$vip['subnet_bits']}") {
if (does_vip_exist($vip)) {
unset($oldvips[$vip['subnet']]);
@@ -256,8 +256,8 @@ function restore_config_section_xmlrpc($raw_params) {
}
/* Cleanup remaining old carps */
foreach ($oldvips as $oldvipif => $oldvippar) {
- if (!is_ipaddr($oldvipif) && does_interface_exist("vip{$oldvipif}"))
- pfSense_interface_destroy("vip{$oldvipif}");
+ if (!is_ipaddr($oldvipif) && does_interface_exist($oldvipif))
+ pfSense_interface_destroy($oldvipif);
}
if ($carp_setuped == true)
interfaces_carp_setup();
OpenPOWER on IntegriCloud