wifi-scripts: add option to set per-device ifname prefix

Simplifies setting ifname to a different pattern for all affected
interfaces.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2024-12-04 11:59:14 +01:00
parent d127539291
commit a9ff3ba24b
3 changed files with 18 additions and 7 deletions

View File

@ -210,6 +210,9 @@ function setup() {
}
data.phy_suffix = phy_suffix(data.config.radio, ":");
data.vif_phy_suffix = phy_suffix(data.config.radio, ".");
data.ifname_prefix = data.config.ifname_prefix;
if (!data.ifname_prefix)
data.ifname_prefix = data.phy + data.vif_phy_suffix + "-";
let active_ifnames = [];
log('Starting');
@ -229,12 +232,12 @@ function setup() {
let mode_idx = idx[mode]++;
if (!v.config.ifname)
v.config.ifname = data.phy + data.vif_phy_suffix + "-" + mode + mode_idx;
v.config.ifname = data.ifname_prefix + mode + mode_idx;
push(active_ifnames, v.config.ifname);
if (v.config.encryption == 'owe' && v.config.owe_transition) {
mode_idx = idx[mode]++;
v.config.owe_transition_ifname = data.phy + data.vif_phy_suffix + "-" + mode + mode_idx;
v.config.owe_transition_ifname = data.ifname_prefix + mode + mode_idx;
push(active_ifnames, v.config.ifname);
}

View File

@ -396,6 +396,10 @@
"type": "alias",
"default": "assoc_sa_query_retry_timeout"
},
"ifname_prefix": {
"description": "Default ifname prefix for this radio",
"type": "string"
},
"iface_max_num_sta": {
"description": "Limits the maximum allowed number of associated clients",
"type": "number"

View File

@ -29,6 +29,7 @@ drv_mac80211_init_device_config() {
config_add_string path phy 'macaddr:macaddr'
config_add_string tx_burst
config_add_string distance
config_add_string ifname_prefix
config_add_int radio beacon_int chanbw frag rts
config_add_int rxantenna txantenna txpower min_tx_power
config_add_int num_global_macaddr multiple_bssid
@ -660,9 +661,9 @@ mac80211_check_ap() {
}
mac80211_set_ifname() {
local phy="$1"
local prefix="$2"
eval "ifname=\"$phy-$prefix\${idx_$prefix:-0}\"; idx_$prefix=\$((\${idx_$prefix:-0 } + 1))"
local prefix="$1"
local type="$2"
eval "ifname=\"$prefix$type\${idx_$type:-0}\"; idx_$type=\$((\${idx_$type:-0 } + 1))"
}
mac80211_prepare_vif() {
@ -679,7 +680,7 @@ mac80211_prepare_vif() {
monitor) prefix=mon;;
esac
mac80211_set_ifname "$phy$vif_phy_suffix" "$prefix"
mac80211_set_ifname "$ifname_prefix" "$prefix"
}
append active_ifnames "$ifname"
@ -1105,7 +1106,8 @@ drv_mac80211_setup() {
txpower \
rxantenna txantenna \
frag rts beacon_int:100 htmode \
num_global_macaddr:1 multiple_bssid
num_global_macaddr:1 multiple_bssid \
ifname_prefix
json_get_values basic_rate_list basic_rate
json_get_values scan_list scan_list
json_select ..
@ -1124,6 +1126,8 @@ drv_mac80211_setup() {
return 1
}
set_default ifname_prefix "$phy$vif_phy_suffix-"
local wdev
local cwdev
local found