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:
		@@ -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);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user