Revision 7b47bd4c
Added by Ermal LUÇI about 13 years ago
usr/local/www/xmlrpc.php | ||
---|---|---|
182 | 182 |
$vipbackup = array(); |
183 | 183 |
$oldvips = array(); |
184 | 184 |
if (isset($params[0]['virtualip'])) { |
185 |
if(is_array($config['virtualip']['vip'])) { |
|
185 |
if (is_array($config['virtualip']['vip'])) {
|
|
186 | 186 |
foreach ($config['virtualip']['vip'] as $vipindex => $vip) { |
187 | 187 |
if ($vip['mode'] == "carp") |
188 |
$oldvips[$vip['vhid']] = "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}";
|
|
189 |
else if ($vip['mode'] == "ipalias" && substr($vip['interface'], 0, 3) == "vip")
|
|
188 |
$oldvips["{$vip['interface']}_vip{$vip['vhid']}"] = "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}";
|
|
189 |
else if ($vip['mode'] == "ipalias" && strstr($vip['interface'], "_vip"))
|
|
190 | 190 |
$oldvips[$vip['subnet']] = "{$vip['interface']}{$vip['subnet']}{$vip['subnet_bits']}"; |
191 |
else if (($vip['mode'] == "ipalias" || $vip['mode'] == 'proxyarp') && substr($vip['interface'], 0, 3) != "vip")
|
|
191 |
else if (($vip['mode'] == "ipalias" || $vip['mode'] == 'proxyarp') && !strstr($vip['interface'], "_vip"))
|
|
192 | 192 |
$vipbackup[] = $vip; |
193 | 193 |
} |
194 | 194 |
} |
... | ... | |
219 | 219 |
$carp_setuped = false; |
220 | 220 |
$anyproxyarp = false; |
221 | 221 |
foreach ($config['virtualip']['vip'] as $vip) { |
222 |
if ($vip['mode'] == "carp" && isset($oldvips[$vip['vhid']])) {
|
|
223 |
if ($oldvips[$vip['vhid']] == "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}") {
|
|
222 |
if ($vip['mode'] == "carp" && isset($oldvips["{$vip['interface']}_vip{$vip['vhid']}"])) {
|
|
223 |
if ($oldvips["{$vip['interface']}_vip{$vip['vhid']}"] == "{$vip['password']}{$vip['advskew']}{$vip['subnet']}{$vip['subnet_bits']}{$vip['advbase']}") {
|
|
224 | 224 |
if (does_vip_exist($vip)) { |
225 |
unset($oldvips[$vip['vhid']]);
|
|
225 |
unset($oldvips["{$vip['interface']}_vip{$vip['vhid']}"]);
|
|
226 | 226 |
continue; // Skip reconfiguring this vips since nothing has changed. |
227 | 227 |
} |
228 | 228 |
} |
229 |
unset($oldvips[$vip['vhid']]);
|
|
230 |
} else if ($vip['mode'] == "ipalias" && substr($vip['interface'], 0, 3) == "vip" && isset($oldvips[$vip['subnet']])) {
|
|
229 |
unset($oldvips["{$vip['interface']}_vip{$vip['vhid']}"]);
|
|
230 |
} else if ($vip['mode'] == "ipalias" && strstr($vip['interface'], "_vip") && isset($oldvips[$vip['subnet']])) {
|
|
231 | 231 |
if ($oldvips[$vip['subnet']] = "{$vip['interface']}{$vip['subnet']}{$vip['subnet_bits']}") { |
232 | 232 |
if (does_vip_exist($vip)) { |
233 | 233 |
unset($oldvips[$vip['subnet']]); |
... | ... | |
256 | 256 |
} |
257 | 257 |
/* Cleanup remaining old carps */ |
258 | 258 |
foreach ($oldvips as $oldvipif => $oldvippar) { |
259 |
if (!is_ipaddr($oldvipif) && does_interface_exist("vip{$oldvipif}"))
|
|
260 |
pfSense_interface_destroy("vip{$oldvipif}");
|
|
259 |
if (!is_ipaddr($oldvipif) && does_interface_exist($oldvipif))
|
|
260 |
pfSense_interface_destroy($oldvipif);
|
|
261 | 261 |
} |
262 | 262 |
if ($carp_setuped == true) |
263 | 263 |
interfaces_carp_setup(); |
Also available in: Unified diff
Make vips vhid be unique per parent interface!