From fa1efd05069d20b162784bdbca02646b69908460 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Fri, 15 Sep 2023 08:46:20 +0200 Subject: [PATCH] interfaces: signal wlan device creation success/failure --- src/etc/inc/interfaces.inc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 441f3b138..09a308e10 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -193,19 +193,19 @@ function interfaces_wlan_clone($device) $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; + return _interfaces_wlan_clone($realif, $config['interfaces'][$if]); } } if (isset($config['wireless']['clone'])) { foreach ($config['wireless']['clone'] as $clone) { if ($device == $clone['cloneif']) { - _interfaces_wlan_clone($clone['cloneif'], $clone); - return; + return _interfaces_wlan_clone($clone['cloneif'], $clone); } } } + + return null; } function interfaces_bridge_configure($device) @@ -1451,8 +1451,6 @@ function _interfaces_wlan_clone($realif, $wlcfg) break; } - $baseif = interface_get_wireless_base($wlcfg['if']); - if (does_interface_exist($realif)) { exec("/sbin/ifconfig " . escapeshellarg($realif), $output, $ret); $ifconfig_str = implode(PHP_EOL, $output); @@ -1473,18 +1471,20 @@ function _interfaces_wlan_clone($realif, $wlcfg) } if ($needs_clone) { + $baseif = interface_get_wireless_base($wlcfg['if']); + legacy_interface_destroy($realif); exec("/sbin/ifconfig wlan create wlandev {$baseif} {$mode} bssid name {$realif} 2>&1", $out, $ret); if ($ret != 0) { log_msg("Failed to clone interface {$baseif} with error code {$ret}, output {$out[0]}", LOG_ERR); - return false; + return null; } file_put_contents("/tmp/{$realif}_oldmac", get_interface_mac($realif)); } - return true; + return $realif; } function interface_sync_wireless_clones(&$ifcfg, $sync_changes = false) /* XXX kill side effect */