diff options
author | Ermal Luçi <eri@pfsense.org> | 2009-12-23 10:58:06 +0000 |
---|---|---|
committer | Ermal Luçi <eri@pfsense.org> | 2009-12-23 10:58:06 +0000 |
commit | 7850de1c8e49a459ae0fe8740eeea5cbf0ae5f13 (patch) | |
tree | e790bf8bf113f1dcc32e68c6c85d8a0b4b6f80a1 /etc | |
parent | 7d017d92f3908a1492f92818f6f783124f4df7a3 (diff) | |
download | pfsense-7850de1c8e49a459ae0fe8740eeea5cbf0ae5f13.zip pfsense-7850de1c8e49a459ae0fe8740eeea5cbf0ae5f13.tar.gz |
Ticket #219. Fix this for vlans and vips. Though it is a very rare case. The other clones are handled half way but should work ok.
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/interfaces.inc | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index d41aad7..c92be92 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1739,8 +1739,7 @@ function interface_configure($interface = "wan", $reloadall = false) { interface_bridge_configure($bridge); } - if (link_interface_to_vips($interface)) - interfaces_vips_configure($interface); + link_interface_to_vips($interface, "update"); if ($interface == "lan") /* make new hosts file */ @@ -2537,13 +2536,40 @@ function link_ip_to_carp_interface($ip) { return $carp_ints; } -function link_interface_to_vips($int) { +function link_interface_to_vlans($int, $action = "") { + global $config; + + if (empty($int)) + return; + + $real_if = get_real_interface($int); + if (is_array($config['vlans']['vlan'])) { + foreach ($config['vlans']['vlan'] as $vlan) { + if ($real_int == $vlan['if']) { + if ($action == "update") { + foreach ($config['interafces'] as $ifname => $ifcfg) { + if ($ifcfg['if'] == $vlan['vlanif']) + interface_vlan_configure($vlan); + interface_configure($ifname); + } + } else if ($action == "") + return $vlan; + } + } + } +} + +function link_interface_to_vips($int, $action = "") { global $config; if (is_array($config['virtualip']['vip'])) foreach ($config['virtualip']['vip'] as $vip) - if($int == $vip['interface']) - return $vip; + if ($int == $vip['interface']) { + if ($action == "update") + interfaces_vips_configure($int); + else + return $vip; + } } /****f* interfaces/link_interface_to_bridge |