diff options
author | Ermal <eri@pfsense.org> | 2012-02-13 19:47:38 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2012-02-13 19:47:38 +0000 |
commit | ae0dde6533f4174b9f46c90b0cbdccb85564f6f3 (patch) | |
tree | 0716066a53a5beb1b7fe8317c9f9c8530a45d41d /etc/inc/interfaces.inc | |
parent | c93b202d75e3df1aecbb25587e1a225a05fbcc9c (diff) | |
download | pfsense-ae0dde6533f4174b9f46c90b0cbdccb85564f6f3.zip pfsense-ae0dde6533f4174b9f46c90b0cbdccb85564f6f3.tar.gz |
Correct checking if a gif is part of bridge so that it actually works correctly adding a gif after having created it on bootup
Diffstat (limited to 'etc/inc/interfaces.inc')
-rw-r--r-- | etc/inc/interfaces.inc | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 0030ea7..cf43a3c 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -413,18 +413,14 @@ function interfaces_bridge_configure($checkmember = 0) { foreach ($config['bridges']['bridged'] as $bridge) { if(empty($bridge['bridgeif'])) $bridge['bridgeif'] = "bridge{$i}"; - if ($checkmember == 1 && (strstr($bridge['members'], "gif") || strstr($bridge['members'], "gre"))) - continue; - if ($checkmember == 2 && !strstr($bridge['members'], "gif") && !strstr($bridge['members'], "gre")) - continue; /* XXX: Maybe we should report any errors?! */ - interface_bridge_configure($bridge); + interface_bridge_configure($bridge, $checkmember); $i++; } } } -function interface_bridge_configure(&$bridge) { +function interface_bridge_configure(&$bridge, $checkmember = 0) { global $config, $g; if (!is_array($bridge)) @@ -439,25 +435,22 @@ function interface_bridge_configure(&$bridge) { if (!count($members)) return -1; - $checklist = get_configured_interface_list(); - - if ($g['booting'] || !empty($bridge['bridgeif'])) { - pfSense_interface_destroy($bridge['bridgeif']); - pfSense_interface_create($bridge['bridgeif']); - $bridgeif = $bridge['bridgeif']; - } else - $bridgeif = pfSense_interface_create("bridge"); - /* Calculate smaller mtu and enforce it */ $smallermtu = 0; $commonrx = true; $commontx = true; + $foundgif = false; foreach ($members as $member) { $realif = get_real_interface($member); $opts = pfSense_get_interface_addresses($realif); $mtu = $opts['mtu']; - if (substr($realif, 0, 3) == "gif" && $mtu <= 1500) - continue; + if (substr($realif, 0, 3) == "gif") { + $foundgif = true; + if ($checkmember == 1) + return; + if ($mtu <= 1500) + continue; + } if (!isset($opts['encaps']['txcsum'])) $commontx = false; if (!isset($opts['encaps']['rxcsum'])) @@ -473,7 +466,9 @@ function interface_bridge_configure(&$bridge) { else if (!empty($mtu) && $mtu < $smallermtu) $smallermtu = $mtu; } - + if ($foundgif == false && $checkmember == 2) + return; + /* Just in case anything is not working well */ if ($smallermtu == 0) $smallermtu = 1500; @@ -489,7 +484,16 @@ function interface_bridge_configure(&$bridge) { $flags |= IFCAP_TSO6; if ($commonlro === false) $flags |= IFCAP_LRO; - + + if ($g['booting'] || !empty($bridge['bridgeif'])) { + pfSense_interface_destroy($bridge['bridgeif']); + pfSense_interface_create($bridge['bridgeif']); + $bridgeif = $bridge['bridgeif']; + } else + $bridgeif = pfSense_interface_create("bridge"); + + $checklist = get_configured_interface_list(); + /* Add interfaces to bridge */ foreach ($members as $member) { if (!array_key_exists($member, $checklist)) @@ -669,8 +673,6 @@ function interface_lagg_configure(&$lagg) { if (!count($members)) return -1; - $checklist = get_interface_list(); - if ($g['booting'] || !(empty($lagg['laggif']))) { pfSense_interface_destroy($lagg['laggif']); pfSense_interface_create($lagg['laggif']); @@ -715,6 +717,8 @@ function interface_lagg_configure(&$lagg) { if ($commonlro === false) $flags |= IFCAP_LRO; + $checklist = get_interface_list(); + foreach ($members as $member) { if (!array_key_exists($member, $checklist)) continue; |