diff options
author | Scott Ullrich <sullrich@pfsense.org> | 2005-10-13 00:12:43 +0000 |
---|---|---|
committer | Scott Ullrich <sullrich@pfsense.org> | 2005-10-13 00:12:43 +0000 |
commit | 7370613f8b99d3cdc5d187698e162f420a084bc4 (patch) | |
tree | 6ac4f01c3336561e061c87f3b58d25c77863455a | |
parent | ce33da32e8f9ddbed2ab9c639034ba70805b5058 (diff) | |
download | pfsense-7370613f8b99d3cdc5d187698e162f420a084bc4.zip pfsense-7370613f8b99d3cdc5d187698e162f420a084bc4.tar.gz |
* Various safety checks
* Return next available slot correctly
-rw-r--r-- | etc/inc/interfaces.inc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 85c8b33..715f667 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1286,7 +1286,10 @@ function get_number_of_bridged_interfaces() { $bridges = split("\n", `/sbin/ifconfig -a | /usr/bin/grep bridge | grep flags`); foreach($bridges as $bridge) { preg_match_all("/bridge(.*):/",$bridge,$match_array); - $bridges_total = $match_array[1][0]; + if($match_array[1][0] <> "") { + if($match_array[1][0] > $bridges_total) + $bridges_total = $match_array[1][0]; + } } return "{$bridges_total}"; } @@ -1297,7 +1300,6 @@ function get_next_available_bridge_interface() { $x=0; for($x=0; $x<$bridges_total; $x++) { if(!stristr($interfaces, "bridge{$x}")) { - $x++; return "{$x}"; } } @@ -1315,14 +1317,16 @@ function destroy_bridge($bridge_num) { } function discover_bridge($interface1, $interface2) { + if(!$interface1) return; + if(!$interface2) return; $total_bridges = get_number_of_bridged_interfaces(); $interfaces = `/sbin/ifconfig -l`; $x=0; for($x=0; $x<$total_bridges; $x++) { $bridge_text = "NA"; - if(!stristr($interfaces, "bridge{$x}")) { - $bridge_text = `/sbin/ifconfig bridge{$x} | grep member`; - } + if(!stristr($interfaces, "bridge{$x}")) + continue; + $bridge_text = `/sbin/ifconfig bridge{$x} | grep member`; if(stristr($bridge_text, $interface1) == true and stristr($bridge_text, $interface2) == true) { return "{$x}"; |