interfaces: finish wireless/wlan rework #5987

* Devices are now configured inline or directly via pluginctl
* Try to use "wlan" underneath as shorter and upstream term
This commit is contained in:
Franco Fichtner 2022-08-29 07:39:15 +02:00
parent 471ae4b6bd
commit 6f91dc4683
4 changed files with 20 additions and 21 deletions

View File

@ -180,30 +180,30 @@ function _interfaces_vlan_configure($vlan)
interfaces_bring_up($vlan['vlanif']);
}
function interfaces_create_wireless_clones($verbose = false)
function interfaces_wlan_clone($device)
{
global $config;
if ($verbose) {
echo 'Creating wireless clone interfaces...';
flush();
}
foreach (array_keys(get_configured_interface_with_descr()) as $if) {
if (isset($config['interfaces'][$if]['wireless'])) {
interface_wireless_clone(get_real_interface($if), $config['interfaces'][$if]);
if (!isset($config['interfaces'][$if]['wireless'])) {
continue;
}
$realif = get_real_interface($if);
/* XXX 'if' check only required if parent is still embedded */
if ($device == $realif || $device == $config['interfaces'][$if]['if']) {
_interfaces_wlan_clone($realif, $config['interfaces'][$if]);
return;
}
}
if (isset($config['wireless']['clone'])) {
foreach ($config['wireless']['clone'] as $clone) {
interface_wireless_clone($clone['cloneif'], $clone);
if ($device == $clone['cloneif']) {
_interfaces_wlan_clone($clone['cloneif'], $clone);
return;
}
}
}
if ($verbose) {
echo "done.\n";
}
}
function interfaces_bridge_configure($device)
@ -755,7 +755,6 @@ function interfaces_configure($verbose = false)
}
interfaces_loopback_configure($verbose);
interfaces_create_wireless_clones($verbose);
interfaces_lagg_configure($verbose);
interfaces_vlan_configure($verbose);
@ -1450,7 +1449,7 @@ function interface_carp_configure($vip)
}
}
function interface_wireless_clone($realif, $wlcfg)
function _interfaces_wlan_clone($realif, $wlcfg)
{
/*
* Check to see if interface has been cloned as of yet.
@ -1607,10 +1606,10 @@ function interface_wireless_configure($if, &$wancfg)
$wancfg['wireless'] = [];
}
/* XXX interface_wireless_clone() and interface_sync_wireless_clones() need work */
/* XXX _interfaces_wlan_clone() and interface_sync_wireless_clones() need work */
// Clone wireless nic if needed.
interface_wireless_clone($if, $wancfg);
_interfaces_wlan_clone($if, $wancfg);
// Reject inadvertent changes to shared settings in case the interface hasn't been configured.
interface_sync_wireless_clones($wancfg, false);

View File

@ -231,7 +231,7 @@ function core_devices()
}
$devices[] = [
'function' => null, /* XXX needs to handle implied clones as well */
'function' => 'interfaces_wlan_clone',
'names' => $wlan_names,
'pattern' => '_wlan',
'volatile' => true,

View File

@ -505,7 +505,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
/* Sync first to be sure it displays the actual settings that will be used */
interface_sync_wireless_clones($a_interfaces[$if], false);
/* Get wireless modes */
interface_wireless_clone(get_real_interface($if), $a_interfaces[$if]);
_interfaces_wlan_clone(get_real_interface($if), $a_interfaces[$if]);
$wlanbaseif = interface_get_wireless_base($a_interfaces[$if]['if']);
$std_wl_copy_fieldnames = array(
'standard', 'mode','protmode', 'ssid', 'channel', 'txpower', 'diversity', 'txantenna', 'rxantenna',
@ -945,7 +945,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
if ($clone_count > 1) {
$wlanif = get_real_interface($if);
$a_interfaces[$if]['wireless']['mode'] = $pconfig['mode'];
if (!interface_wireless_clone("{$wlanif}_", $a_interfaces[$if])) {
if (!_interfaces_wlan_clone("{$wlanif}_", $a_interfaces[$if])) {
$input_errors[] = sprintf(gettext("Unable to change mode to %s. You may already have the maximum number of wireless clones supported in this mode."), $wlan_modes[$a_interfaces[$if]['wireless']['mode']]);
} else {
legacy_interface_destroy("{$wlanif}_");

View File

@ -101,7 +101,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
}
}
if (count($input_errors) == 0) {
if (!interface_wireless_clone($clone['cloneif'], $clone)) {
if (!_interfaces_wlan_clone($clone['cloneif'], $clone)) {
$input_errors[] = sprintf(gettext('Error creating interface with mode %s. The %s interface may not support creating more clones with the selected mode.'), $wlan_modes[$clone['mode']], $clone['if']);
} else {
if (isset($id)) {