summaryrefslogtreecommitdiffstats
path: root/src/etc/inc/interfaces.inc
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2016-02-16 22:17:51 -0600
committerChris Buechler <cmb@pfsense.org>2016-02-16 22:17:51 -0600
commit69760d2b07c81ea7ea81d127d19edd7f5f30950a (patch)
treec1a5d511a56804d538b7f55b7a2f4d68d69a237f /src/etc/inc/interfaces.inc
parentd7112e85d29615df3f281fed893cc00b68d3e24f (diff)
downloadpfsense-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/etc/inc/interfaces.inc')
-rw-r--r--src/etc/inc/interfaces.inc35
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 = "") {
OpenPOWER on IntegriCloud