diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 1e95b0b07e..e5515bfc40 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -279,6 +279,27 @@ function interface_qinq2_configure(&$qinq, $fd, $macaddr) {
return $vlanif;
}
+function interfaces_create_wireless_clones() {
+ global $config;
+
+ if($g['booting'])
+ echo "Creating other wireless clone interfaces...";
+ if (is_array($config['wireless']['clone']) && count($config['wireless']['clone'])) {
+ foreach ($config['wireless']['clone'] as $clone) {
+ if(empty($clone['cloneif']))
+ continue;
+ if(does_interface_exist($clone['cloneif']))
+ continue;
+ /* XXX: Maybe we should report any errors?! */
+ if(interface_wireless_clone($clone['cloneif'], $clone))
+ if($g['booting'])
+ echo " " . $clone['cloneif'];
+ }
+ }
+ if($g['booting'])
+ echo " done.\n";
+}
+
function interfaces_bridge_configure() {
global $config;
@@ -695,6 +716,9 @@ function interfaces_configure() {
}
}
+ /* create the unconfigured wireless clones */
+ interfaces_create_wireless_clones();
+
/* set up GRE virtual interfaces */
interfaces_gre_configure();
@@ -1342,7 +1366,11 @@ function interface_wireless_clone($realif, $wlcfg) {
* If it has not been cloned then go ahead and clone it.
*/
$needs_clone = false;
- switch($wlcfg['wireless']['mode']) {
+ if(is_array($wlcfg['wireless']))
+ $wlcfg_mode = $wlcfg['wireless']['mode'];
+ else
+ $wlcfg_mode = $wlcfg['mode'];
+ switch($wlcfg_mode) {
case "hostap":
$mode = "wlanmode hostap";
break;
@@ -1353,19 +1381,20 @@ function interface_wireless_clone($realif, $wlcfg) {
$mode = "";
break;
}
+ $baseif = interface_get_wireless_base($wlcfg['if']);
if(does_interface_exist($realif)) {
exec("/sbin/ifconfig {$realif}", $output, $ret);
$ifconfig_str = implode($output);
- if(($wlcfg['wireless']['mode'] == "hostap") && (! preg_match("/hostap/si", $ifconfig_str))) {
- log_error("Interface {$wlcfg['if']}_wlan{$interface_num} changed to hostap mode");
+ if(($wlcfg_mode == "hostap") && (! preg_match("/hostap/si", $ifconfig_str))) {
+ log_error("Interface {$realif} changed to hostap mode");
$needs_clone = true;
}
- if(($wlcfg['wireless']['mode'] == "adhoc") && (! preg_match("/adhoc/si", $ifconfig_str))) {
- log_error("Interface {$wlcfg['if']}_wlan{$interface_num} changed to adhoc mode");
+ if(($wlcfg_mode == "adhoc") && (! preg_match("/adhoc/si", $ifconfig_str))) {
+ log_error("Interface {$realif} changed to adhoc mode");
$needs_clone = true;
}
- if(($wlcfg['wireless']['mode'] == "bss") && (preg_match("/hostap|adhoc/si", $ifconfig_str))) {
- log_error("Interface {$wlcfg['if']}_wlan{$interface_num} changed to infrastructure mode");
+ if(($wlcfg_mode == "bss") && (preg_match("/hostap|adhoc/si", $ifconfig_str))) {
+ log_error("Interface {$realif} changed to infrastructure mode");
$needs_clone = true;
}
} else {
@@ -1380,15 +1409,45 @@ function interface_wireless_clone($realif, $wlcfg) {
log_error("Cloning new wireless interface {$realif}");
// Create the new wlan interface. FreeBSD returns the new interface name.
// example: wlan2
- exec("/sbin/ifconfig wlan create wlandev {$wlcfg['if']} {$mode} 2>&1", $out, $ret);
+ exec("/sbin/ifconfig wlan create wlandev {$baseif} {$mode} bssid 2>&1", $out, $ret);
if($ret <> 0) {
- log_error("Failed to clone interface {$wlcfg['if']} with error code {$ret}, output {$out[0]}");
+ log_error("Failed to clone interface {$baseif} with error code {$ret}, output {$out[0]}");
+ return false;
}
$newif = trim($out[0]);
// Rename the interface to {$parentnic}_wlan{$number}#: EX: ath0_wlan0
mwexec("/sbin/ifconfig {$newif} name {$realif} 2>&1", false);
// FIXME: not sure what ngctl is for. Doesn't work.
- // mwexec("/usr/sbin/ngctl name {$newif}: {$wlcfg['if']}_wlan{$interface_num}", false);
+ // mwexec("/usr/sbin/ngctl name {$newif}: {$realif}", false);
+ }
+ return true;
+}
+
+function interface_sync_wireless_clones(&$ifcfg, $sync_changes = false) {
+ global $config, $g;
+
+ $shared_settings = array('standard', 'turbo', 'protmode', 'channel', 'txpower');
+
+ if(!is_array($ifcfg['wireless']))
+ return;
+
+ $baseif = interface_get_wireless_base($ifcfg['if']);
+
+ $iflist = get_configured_interface_list(false, true);
+ foreach ($iflist as $if) {
+ if ($baseif == interface_get_wireless_base($config['interfaces'][$if]['if']) && $ifcfg['if'] != $config['interfaces'][$if]['if']) {
+ if (isset($config['interfaces'][$if]['wireless']['standard']) || $sync_changes) {
+ foreach ($shared_settings as $setting) {
+ if ($sync_changes) {
+ $config['interfaces'][$if]['wireless'][$setting] = $ifcfg['wireless'][$setting];
+ } else {
+ $ifcfg['wireless'][$setting] = $config['interfaces'][$if]['wireless'][$setting];
+ }
+ }
+ if (!$sync_changes)
+ break;
+ }
+ }
}
}
@@ -1408,6 +1467,9 @@ function interface_wireless_configure($if, &$wl, &$wlcfg) {
// Clone wireless nic if needed.
interface_wireless_clone($if, $wl);
+ // Reject inadvertent changes to shared settings in case the interface hasn't been configured.
+ interface_sync_wireless_clones($wl, false);
+
$fd_set = fopen("{$g['tmp_path']}/{$if}_setup.sh","w");
fwrite($fd_set, "#!/bin/sh\n");
fwrite($fd_set, "# {$g['product_name']} wireless configuration script.\n\n");
@@ -2340,6 +2402,22 @@ function interface_translate_type_to_real($interface) {
return $interface;
}
+function interface_get_wireless_base($wlif) {
+ if(!stristr($wlif, "_wlan")) {
+ return $wlif;
+ } else {
+ return substr($wlif, 0, stripos($wlif, "_wlan"));
+ }
+}
+
+function interface_get_wireless_clone($wlif) {
+ if(!stristr($wlif, "_wlan")) {
+ return $wlif . "_wlan0";
+ } else {
+ return $wlif;
+ }
+}
+
function get_real_interface($interface = "wan") {
global $config;
@@ -2399,11 +2477,7 @@ function get_real_interface($interface = "wan") {
// interface name format: $parentnic_wlanparentnic#
// example: ath0_wlan0
if(is_interface_wireless($cfg['if'])) {
- if ($interface == "wan")
- $interface_num = 0;
- else
- $interface_num = substr($interface, 3);
- $wanif = $cfg['if'] . "_wlan" . $interface_num;
+ $wanif = interface_get_wireless_clone($cfg['if']);
break;
}
diff --git a/etc/inc/util.inc b/etc/inc/util.inc
index 559a3bc1ea..d31e1a9c42 100644
--- a/etc/inc/util.inc
+++ b/etc/inc/util.inc
@@ -499,6 +499,7 @@ function get_interface_list($mode = "active", $keyby = "physical", $vfaces = "")
'lo',
'ng',
'_vlan',
+ '_wlan',
'pflog',
'plip',
'pfsync',
@@ -958,7 +959,7 @@ function is_interface_mismatch() {
$do_assign = false;
$i = 0;
foreach ($config['interfaces'] as $ifname => $ifcfg) {
- if (preg_match("/^enc|^tun|^ppp|^pptp|^pppoe|^ovpn|^gif|^gre|^lagg|^bridge|vlan/i", $ifcfg['if'])) {
+ if (preg_match("/^enc|^tun|^ppp|^pptp|^pppoe|^ovpn|^gif|^gre|^lagg|^bridge|vlan|_wlan/i", $ifcfg['if'])) {
$i++;
}
else if (does_interface_exist($ifcfg['if']) == false) {
diff --git a/etc/inc/xmlparse.inc b/etc/inc/xmlparse.inc
index 9471994706..c9720c05f4 100644
--- a/etc/inc/xmlparse.inc
+++ b/etc/inc/xmlparse.inc
@@ -36,10 +36,10 @@ function listtags() {
* I know it's a pain, but it's a pain to find stuff too if it's not
*/
$ret = explode(" ",
- "alias aliasurl allowedip authserver bridged ca cacert cert config container ".
- "columnitem depends_on_package disk dnsserver dnsupdate domainoverrides ".
- "dyndns earlyshellcmd element encryption-algorithm-option field ".
- "fieldname hash-algorithm-option gateway_item gateway_group gif gre ".
+ "alias aliasurl allowedip authserver bridged ca cacert cert clone config ".
+ "container columnitem depends_on_package disk dnsserver dnsupdate ".
+ "domainoverrides dyndns earlyshellcmd element encryption-algorithm-option ".
+ "field fieldname hash-algorithm-option gateway_item gateway_group gif gre ".
"group hosts member ifgroupentry igmpentry interface_array item key lagg " .
"lbaction lbpool l7rules lbprotocol ".
"member menu tab mobilekey monitor_type mount ntpserver onetoone ".
diff --git a/etc/inc/xmlreader.inc b/etc/inc/xmlreader.inc
index 7627c4b130..dd6eb9a60b 100644
--- a/etc/inc/xmlreader.inc
+++ b/etc/inc/xmlreader.inc
@@ -40,10 +40,10 @@ function listtags() {
* I know it's a pain, but it's a pain to find stuff too if it's not
*/
$ret = explode(" ",
- "alias aliasurl allowedip authserver bridged ca cacert cert config container ".
- "columnitem depends_on_package disk dnsserver dnsupdate domainoverrides ".
- "dyndns earlyshellcmd element encryption-algorithm-option field ".
- "fieldname hash-algorithm-option gateway_item gateway_group gif gre ".
+ "alias aliasurl allowedip authserver bridged ca cacert cert clone config ".
+ "container columnitem depends_on_package disk dnsserver dnsupdate ".
+ "domainoverrides dyndns earlyshellcmd element encryption-algorithm-option ".
+ "field fieldname hash-algorithm-option gateway_item gateway_group gif gre ".
"group hosts member ifgroupentry igmpentry interface_array item key lagg " .
"lbaction lbpool l7rules lbprotocol ".
"member menu tab mobilekey monitor_type mount ntpserver onetoone ".
diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php
index a2a07ed3dd..578bcde84a 100755
--- a/usr/local/www/interfaces.php
+++ b/usr/local/www/interfaces.php
@@ -215,6 +215,7 @@ if (isset($wancfg['wireless'])) {
/* Get wireless modes */
$wlanif = get_real_interface($if);
interface_wireless_clone($wlanif, $wancfg);
+ $wlanbaseif = interface_get_wireless_base($wancfg['if']);
$wl_modes = get_wireless_modes($if);
$pconfig['standard'] = $wancfg['wireless']['standard'];
$pconfig['mode'] = $wancfg['wireless']['mode'];
@@ -295,6 +296,9 @@ if ($_POST['apply']) {
if ($_POST && $_POST['enable'] == "no") {
unset($wancfg['enable']);
interface_bring_down($if);
+ if (isset($wancfg['wireless'])) {
+ interface_sync_wireless_clones($wancfg, false);
+ }
write_config("Interface {$_POST['descr']}({$if}) is now disabled.");
mark_subsystem_dirty('interfaces');
header("Location: interfaces.php?if={$if}");
@@ -773,6 +777,7 @@ function handle_wireless_post() {
$wancfg['wireless']['wep']['key'][] = $newkey;
}
}
+ interface_sync_wireless_clones($wancfg, true);
}
$pgtitle = array("Interfaces", $pconfig['descr']);
@@ -1232,7 +1237,10 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
- Wireless configuration
+ Common wireless configuration
+
+
+ These settings apply to all wireless networks on =$wlanbaseif;?>.
Standard
@@ -1249,16 +1257,6 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
-
- Mode
-
-
- value="bss">Infrastructure (BSS)
- value="adhoc">Ad-hoc (IBSS)
- value="hostap">Access Point
-
-
-
802.11g OFDM Protection Mode
@@ -1271,6 +1269,61 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
For IEEE 802.11g, use the specified technique for protecting OFDM frames in a mixed 11b/11g network.
+
+
+ Transmit power
+
+
+
+ for($x = 99; $x > 0; $x--) {
+ if($pconfig["txpower"] == $x)
+ $SELECTED = " SELECTED";
+ else
+ $SELECTED = "";
+ echo "{$x} \n";
+ }
+ ?>
+
+ Note: Typically only a few discreet power settings are available and the driver will use the setting closest to the specified value. Not all adaptors support changing the transmit power setting.
+
+
+
+ Channel
+
+
+ value="0">Auto
+ $wl_channels) {
+ if($wl_standard == "11g") { $wl_standard = "11b/g"; }
+ foreach($wl_channels as $wl_channel) {
+ echo "$wl_standard - $wl_channel \n";
+ }
+ }
+ ?>
+
+
+ Note: Not all channels may be supported by your card
+
+
+
+
+
+
+ Wireless configuration
+
+
+ Mode
+
+
+ value="bss">Infrastructure (BSS)
+ value="adhoc">Ad-hoc (IBSS)
+ value="hostap">Access Point
+
+
SSID
@@ -1311,45 +1364,6 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe"
(this might create problems for some clients).
-
- Transmit power
-
-
-
- for($x = 99; $x > 0; $x--) {
- if($pconfig["txpower"] == $x)
- $SELECTED = " SELECTED";
- else
- $SELECTED = "";
- echo "{$x} \n";
- }
- ?>
-
- Note: Typically only a few discreet power settings are available and the driver will use the setting closest to the specified value. Not all adaptors support changing the transmit power setting.
-
-
-
- Channel
-
-
- value="0">Auto
- $wl_channels) {
- if($wl_standard == "11g") { $wl_standard = "11b/g"; }
- foreach($wl_channels as $wl_channel) {
- echo "$wl_standard - $wl_channel \n";
- }
- }
- ?>
-
-
- Note: Not all channels may be supported by your card
-
-
Distance setting
diff --git a/usr/local/www/interfaces_assign.php b/usr/local/www/interfaces_assign.php
index 04b9979466..6dc2ff366c 100755
--- a/usr/local/www/interfaces_assign.php
+++ b/usr/local/www/interfaces_assign.php
@@ -58,6 +58,14 @@ require("rrd.inc");
/* get list without VLAN interfaces */
$portlist = get_interface_list();
+/* add wireless clone interfaces */
+if (is_array($config['wireless']['clone']) && count($config['wireless']['clone'])) {
+ foreach ($config['wireless']['clone'] as $clone) {
+ $portlist[$clone['cloneif']] = $clone;
+ $portlist[$clone['cloneif']]['iswlclone'] = true;
+ }
+}
+
/* add VLAN interfaces */
if (is_array($config['vlans']['vlan']) && count($config['vlans']['vlan'])) {
foreach ($config['vlans']['vlan'] as $vlan) {
@@ -312,8 +320,10 @@ if ($_GET['act'] == "add") {
}
if (!$portused) {
$config['interfaces'][$newifname]['if'] = $portname;
- if (preg_match($g['wireless_regex'], $portname))
+ if (preg_match($g['wireless_regex'], $portname)) {
$config['interfaces'][$newifname]['wireless'] = array();
+ interface_sync_wireless_clones($config['interfaces'][$newifname], false);
+ }
break;
}
}
@@ -356,13 +366,14 @@ if(file_exists("/var/run/interface_mismatch_reboot_needed"))
$tab_array = array();
$tab_array[0] = array("Interface assignments", true, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
@@ -392,6 +403,11 @@ if(file_exists("/var/run/interface_mismatch_reboot_needed"))
if ($portinfo['descr'])
$descr .= " (" . $portinfo['descr'] . ")";
echo htmlspecialchars($descr);
+ } elseif ($portinfo['iswlclone']) {
+ $descr = $portinfo['cloneif'];
+ if ($portinfo['descr'])
+ $descr .= " (" . $portinfo['descr'] . ")";
+ echo htmlspecialchars($descr);
} elseif ($portinfo['isppp']) {
$descr = "PPP {$portinfo['port']}";
if ($portinfo['descr'])
diff --git a/usr/local/www/interfaces_bridge.php b/usr/local/www/interfaces_bridge.php
index cde0873f1e..9e009ba5b3 100644
--- a/usr/local/www/interfaces_bridge.php
+++ b/usr/local/www/interfaces_bridge.php
@@ -88,13 +88,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", true, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", true, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_gif.php b/usr/local/www/interfaces_gif.php
index 17a86965e1..cd214e7b91 100644
--- a/usr/local/www/interfaces_gif.php
+++ b/usr/local/www/interfaces_gif.php
@@ -87,13 +87,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", true, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", true, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_gre.php b/usr/local/www/interfaces_gre.php
index e8cdcd192c..5ad7026e21 100644
--- a/usr/local/www/interfaces_gre.php
+++ b/usr/local/www/interfaces_gre.php
@@ -87,13 +87,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", true, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", true, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_groups.php b/usr/local/www/interfaces_groups.php
index 9557ace5f5..65564ddcd9 100755
--- a/usr/local/www/interfaces_groups.php
+++ b/usr/local/www/interfaces_groups.php
@@ -73,13 +73,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", true, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_lagg.php b/usr/local/www/interfaces_lagg.php
index 220cb2036e..0beac77dd1 100644
--- a/usr/local/www/interfaces_lagg.php
+++ b/usr/local/www/interfaces_lagg.php
@@ -93,13 +93,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", true, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", true, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_ppp.php b/usr/local/www/interfaces_ppp.php
index ac0ed9615d..3eb93ba55b 100644
--- a/usr/local/www/interfaces_ppp.php
+++ b/usr/local/www/interfaces_ppp.php
@@ -87,13 +87,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", true, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", true, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_qinq.php b/usr/local/www/interfaces_qinq.php
index ab79fcef4a..604d778ac2 100755
--- a/usr/local/www/interfaces_qinq.php
+++ b/usr/local/www/interfaces_qinq.php
@@ -95,13 +95,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", false, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", true, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", false, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", true, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_vlan.php b/usr/local/www/interfaces_vlan.php
index 39211e7e56..0adfa7d230 100755
--- a/usr/local/www/interfaces_vlan.php
+++ b/usr/local/www/interfaces_vlan.php
@@ -89,13 +89,14 @@ include("head.inc");
$tab_array = array();
$tab_array[0] = array("Interface assignments", false, "interfaces_assign.php");
$tab_array[1] = array("Interface Groups", false, "interfaces_groups.php");
- $tab_array[2] = array("VLANs", true, "interfaces_vlan.php");
- $tab_array[3] = array("QinQs", false, "interfaces_qinq.php");
- $tab_array[4] = array("PPP", false, "interfaces_ppp.php");
- $tab_array[5] = array("GRE", false, "interfaces_gre.php");
- $tab_array[6] = array("GIF", false, "interfaces_gif.php");
- $tab_array[7] = array("Bridges", false, "interfaces_bridge.php");
- $tab_array[8] = array("LAGG", false, "interfaces_lagg.php");
+ $tab_array[2] = array("Wireless", false, "interfaces_wireless.php");
+ $tab_array[3] = array("VLANs", true, "interfaces_vlan.php");
+ $tab_array[4] = array("QinQs", false, "interfaces_qinq.php");
+ $tab_array[5] = array("PPP", false, "interfaces_ppp.php");
+ $tab_array[6] = array("GRE", false, "interfaces_gre.php");
+ $tab_array[7] = array("GIF", false, "interfaces_gif.php");
+ $tab_array[8] = array("Bridges", false, "interfaces_bridge.php");
+ $tab_array[9] = array("LAGG", false, "interfaces_lagg.php");
display_top_tabs($tab_array);
?>
diff --git a/usr/local/www/interfaces_wireless.php b/usr/local/www/interfaces_wireless.php
new file mode 100644
index 0000000000..8f90b71fa8
--- /dev/null
+++ b/usr/local/www/interfaces_wireless.php
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+