summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorErmal Luçi <eri@pfsense.org>2009-12-23 10:58:06 +0000
committerErmal Luçi <eri@pfsense.org>2009-12-23 10:58:06 +0000
commit7850de1c8e49a459ae0fe8740eeea5cbf0ae5f13 (patch)
treee790bf8bf113f1dcc32e68c6c85d8a0b4b6f80a1 /etc
parent7d017d92f3908a1492f92818f6f783124f4df7a3 (diff)
downloadpfsense-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.inc36
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
OpenPOWER on IntegriCloud