diff options
author | Chris Buechler <cmb@pfsense.org> | 2016-02-16 22:17:51 -0600 |
---|---|---|
committer | Chris Buechler <cmb@pfsense.org> | 2016-02-16 22:17:51 -0600 |
commit | 69760d2b07c81ea7ea81d127d19edd7f5f30950a (patch) | |
tree | c1a5d511a56804d538b7f55b7a2f4d68d69a237f /src | |
parent | d7112e85d29615df3f281fed893cc00b68d3e24f (diff) | |
download | pfsense-69760d2b07c81ea7ea81d127d19edd7f5f30950a.zip pfsense-69760d2b07c81ea7ea81d127d19edd7f5f30950a.tar.gz |
Separate bridge application of STP and advanced parameters into their own functions so they can be applied separately from creation of the entire bridge. Apply those after adding a bridge member. Ticket #4312
Diffstat (limited to 'src')
-rw-r--r-- | src/etc/inc/interfaces.inc | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 575512e..246136b 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -551,7 +551,22 @@ function interface_bridge_configure(&$bridge, $checkmember = 0) { } if (isset($bridge['enablestp'])) { - /* Choose spanning tree proto */ + interface_bridge_configure_stp($bridge); + } + + interface_bridge_configure_advanced($bridge); + + if ($bridge['bridgeif']) { + interfaces_bring_up($bridge['bridgeif']); + } else { + log_error(gettext("bridgeif not defined -- could not bring interface up")); + } +} + +function interface_bridge_configure_stp($bridge) { + if (isset($bridge['enablestp'])) { + $bridgeif = $bridge['bridgeif']; + /* configure spanning tree proto */ mwexec("/sbin/ifconfig {$bridgeif} proto " . escapeshellarg($bridge['proto'])); if (!empty($bridge['stp'])) { @@ -605,6 +620,10 @@ function interface_bridge_configure(&$bridge, $checkmember = 0) { } } } +} + +function interface_bridge_configure_advanced($bridge) { + $bridgeif = $bridge['bridgeif']; if ($bridge['maxaddr'] <> "") { mwexec("/sbin/ifconfig {$bridgeif} maxaddr " . escapeshellarg($bridge['maxaddr'])); @@ -661,12 +680,6 @@ function interface_bridge_configure(&$bridge, $checkmember = 0) { mwexec("/sbin/ifconfig {$bridgeif} private {$realif}"); } } - - if ($bridge['bridgeif']) { - interfaces_bring_up($bridge['bridgeif']); - } else { - log_error(gettext("bridgeif not defined -- could not bring interface up")); - } } function interface_bridge_add_member($bridgeif, $interface, $flagsapplied = false) { @@ -687,6 +700,14 @@ function interface_bridge_add_member($bridgeif, $interface, $flagsapplied = fals } pfSense_bridge_add_member($bridgeif, $interface); + if (is_array($config['bridges']['bridged']) && count($config['bridges']['bridged'])) { + foreach ($config['bridges']['bridged'] as $bridge) { + if ($bridgeif == $bridge['bridgeif']) { + interface_bridge_configure_stp($bridge); + interface_bridge_configure_advanced($bridge); + } + } + } } function interfaces_lagg_configure($realif = "") { |