diff options
author | Ermal <eri@pfsense.org> | 2011-06-14 12:50:14 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2011-06-14 12:50:14 +0000 |
commit | b526daafae3405b27fa7219d90a81272d0979f57 (patch) | |
tree | 095fe356df8cdbfa9db23179e4d49586b0831513 /etc/inc/interfaces.inc | |
parent | 31d5d37e9e86c66bf099d3820205250ef73a2d7d (diff) | |
download | pfsense-b526daafae3405b27fa7219d90a81272d0979f57.zip pfsense-b526daafae3405b27fa7219d90a81272d0979f57.tar.gz |
Correct functiong does_vip_exist() to actually work. Fixes #1598
Diffstat (limited to 'etc/inc/interfaces.inc')
-rw-r--r-- | etc/inc/interfaces.inc | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index af99b06..4a3498b 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -94,24 +94,31 @@ function does_vip_exist($vip) { if(!$vip) return false; - $realif = get_real_interface($vip['interface']); - $ints = get_interface_arr(true); - if (!in_array($realif, $ints)) - return false; - switch ($vip['type']) { + switch ($vip['mode']) { case "carp": case "carpdev": + $realif = "vip{$vip['vhid']}"; + if (!does_interface_exist($realif)) { + return false; + } + break; case "ipalias": - $ifacedata = pfSense_getall_interface_addresses($realif); - foreach ($ifacedata as $vipips) { - if ($vipips == "{$vip['subnet']}/{$vip['subnet_bits']}") - return true; + $realif = get_real_interface($vip['interface']); + if (!does_interface_exist($realif)) { + return false; } break; case "proxyarp": /* XXX: Implement this */ - break; + default: + return false; + } + + $ifacedata = pfSense_getall_interface_addresses($realif); + foreach ($ifacedata as $vipips) { + if ($vipips == "{$vip['subnet']}/{$vip['subnet_bits']}") + return true; } return false; |