mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-29 17:42:41 +00:00 
			
		
		
		
	| @@ -567,58 +567,10 @@ mac80211_check_ap() { | ||||
| 	has_ap=1 | ||||
| } | ||||
|  | ||||
| mac80211_prepare_vif() { | ||||
| 	json_select config | ||||
|  | ||||
| 	json_get_vars ifname mode ssid wds powersave macaddr enable wpa_psk_file vlan_file | ||||
|  | ||||
| mac80211_set_ifname() { | ||||
| 	local phy="$1" | ||||
| 	[ -n "$ifname" ] || ifname="wlan${phy#phy}${if_idx:+-$if_idx}" | ||||
| 	if_idx=$((${if_idx:-0} + 1)) | ||||
|  | ||||
| 	append active_ifnames "$ifname" | ||||
| 	set_default wds 0 | ||||
| 	set_default powersave 0 | ||||
| 	json_add_string _ifname "$ifname" | ||||
|  | ||||
| 	default_macaddr= | ||||
| 	[ -n "$macaddr" ] || { | ||||
| 		macaddr="$(mac80211_generate_mac $phy)" | ||||
|  		macidx="$(($macidx + 1))" | ||||
| 		default_macaddr=1 | ||||
| 	} | ||||
| 	json_add_string _macaddr "$macaddr" | ||||
| 	json_add_string _default_macaddr "$default_macaddr" | ||||
| 	json_select .. | ||||
|  | ||||
|  | ||||
| 	[ "$mode" == "ap" ] && { | ||||
| 		[ -z "$wpa_psk_file" ] && hostapd_set_psk "$ifname" | ||||
| 		[ -z "$vlan_file" ] && hostapd_set_vlan "$ifname" | ||||
| 	} | ||||
|  | ||||
| 	json_select config | ||||
|  | ||||
| 	# It is far easier to delete and create the desired interface | ||||
| 	case "$mode" in | ||||
| 		ap) | ||||
| 			# Hostapd will handle recreating the interface and | ||||
| 			# subsequent virtual APs belonging to the same PHY | ||||
| 			if [ -n "$hostapd_ctrl" ]; then | ||||
| 				type=bss | ||||
| 			else | ||||
| 				type=interface | ||||
| 			fi | ||||
|  | ||||
| 			mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return | ||||
|  | ||||
| 			[ -n "$hostapd_ctrl" ] || { | ||||
| 				ap_ifname="${ifname}" | ||||
| 				hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}" | ||||
| 			} | ||||
| 		;; | ||||
| 	esac | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| mac80211_prepare_iw_htmode() { | ||||
| @@ -763,19 +715,6 @@ mac80211_setup_monitor() { | ||||
| 	json_set_namespace "$prev" | ||||
| } | ||||
|  | ||||
| mac80211_set_vif_txpower() { | ||||
| 	local name="$1" | ||||
|  | ||||
| 	json_select config | ||||
| 	json_get_var ifname _ifname | ||||
| 	json_get_vars vif_txpower wds | ||||
| 	json_select .. | ||||
|  | ||||
| 	set_default wds 0 | ||||
| 	[ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed "${vif_txpower%%.*}00" | ||||
| 	[ "$wds" -gt 0 ] && echo 1 > /sys/kernel/debug/ieee80211/$phy/netdev\:$ifname/disable_offload | ||||
| } | ||||
|  | ||||
| wpa_supplicant_init_config() { | ||||
| 	json_set_namespace wpa_supp prev | ||||
|  | ||||
| @@ -880,19 +819,39 @@ mac80211_setup_supplicant() { | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| mac80211_setup_vif() { | ||||
| 	local name="$1" | ||||
| 	local failed | ||||
|  | ||||
| mac80211_prepare_vif() { | ||||
| 	json_select config | ||||
| 	json_get_var ifname _ifname | ||||
| 	json_get_var macaddr _macaddr | ||||
| 	json_get_var default_macaddr _default_macaddr | ||||
| 	json_get_vars mode wds powersave | ||||
|  | ||||
| 	set_default powersave 0 | ||||
| 	json_get_vars ifname mode ssid wds powersave macaddr enable wpa_psk_file vlan_file | ||||
|  | ||||
| 	[ -n "$ifname" ] || { | ||||
| 		local prefix; | ||||
|  | ||||
| 		case "$mode" in | ||||
| 		ap|sta|mesh) prefix=$mode;; | ||||
| 		adhoc) prefix=ibss;; | ||||
| 		monitor) prefix=mon;; | ||||
| 		esac | ||||
|  | ||||
| 		mac80211_set_ifname "$phy" "$prefix" | ||||
| 	} | ||||
|  | ||||
| 	append active_ifnames "$ifname" | ||||
|  | ||||
| 	default_macaddr= | ||||
| 	if [ -z "$macaddr" ]; then | ||||
| 		macaddr="$(mac80211_generate_mac $phy)" | ||||
| 		macidx="$(($macidx + 1))" | ||||
| 		default_macaddr=1 | ||||
| 	elif [ "$macaddr" = 'random' ]; then | ||||
| 		macaddr="$(macaddr_random)" | ||||
| 	fi | ||||
|  | ||||
| 	local failed= | ||||
| 	set_default wds 0 | ||||
| 	set_default powersave 0 | ||||
|  | ||||
| 	# It is far easier to delete and create the desired interface | ||||
| 	case "$mode" in | ||||
| 		mesh) | ||||
| 			json_get_vars $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING | ||||
| @@ -918,10 +877,48 @@ mac80211_setup_vif() { | ||||
| 		monitor) | ||||
| 			mac80211_setup_monitor | ||||
| 		;; | ||||
| 		ap) | ||||
| 			# Hostapd will handle recreating the interface and | ||||
| 			# subsequent virtual APs belonging to the same PHY | ||||
| 			if [ -n "$hostapd_ctrl" ]; then | ||||
| 				type=bss | ||||
| 			else | ||||
| 				type=interface | ||||
| 			fi | ||||
|  | ||||
| 			mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return | ||||
|  | ||||
| 			[ -n "$hostapd_ctrl" ] || { | ||||
| 				ap_ifname="${ifname}" | ||||
| 				hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}" | ||||
| 			} | ||||
| 		;; | ||||
| 	esac | ||||
|  | ||||
| 	[ -n "$failed" ] || { | ||||
| 		json_add_string _ifname "$ifname" | ||||
| 		json_add_string _macaddr "$macaddr" | ||||
| 		json_add_string _default_macaddr "$default_macaddr" | ||||
| 	} | ||||
|  | ||||
| 	json_select .. | ||||
| 	[ -n "$failed" ] || wireless_add_vif "$name" "$ifname" | ||||
|  | ||||
| 	[ "$mode" == "ap" ] && { | ||||
| 		[ -z "$wpa_psk_file" ] && hostapd_set_psk "$ifname" | ||||
| 		[ -z "$vlan_file" ] && hostapd_set_vlan "$ifname" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| mac80211_setup_vif() { | ||||
| 	local name="$1" | ||||
|  | ||||
| 	json_select config | ||||
| 	json_get_var ifname _ifname | ||||
| 	json_get_vars vif_txpower | ||||
| 	json_select .. | ||||
|  | ||||
| 	[ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed "${vif_txpower%%.*}00" | ||||
| 	[ -n "$ifname" ] && wireless_add_vif "$name" "$ifname" | ||||
| } | ||||
|  | ||||
| get_freq() { | ||||
| @@ -1073,7 +1070,6 @@ drv_mac80211_setup() { | ||||
| 	mac80211_prepare_iw_htmode | ||||
| 	active_ifnames= | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_prepare_vif | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_setup_vif | ||||
|  | ||||
| 	[ -x /usr/sbin/wpa_supplicant ] && wpa_supplicant_set_config "$phy" | ||||
| 	[ -x /usr/sbin/hostapd ] && hostapd_set_config "$phy" | ||||
| @@ -1084,7 +1080,7 @@ drv_mac80211_setup() { | ||||
| 	wdev_tool "$phy" set_config "$(json_dump)" $active_ifnames | ||||
| 	json_set_namespace "$prev" | ||||
|  | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_set_vif_txpower | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_setup_vif | ||||
| 	wireless_set_up | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -567,58 +567,10 @@ mac80211_check_ap() { | ||||
| 	has_ap=1 | ||||
| } | ||||
|  | ||||
| mac80211_prepare_vif() { | ||||
| 	json_select config | ||||
|  | ||||
| 	json_get_vars ifname mode ssid wds powersave macaddr enable wpa_psk_file vlan_file | ||||
|  | ||||
| mac80211_set_ifname() { | ||||
| 	local phy="$1" | ||||
| 	[ -n "$ifname" ] || ifname="wlan${phy#phy}${if_idx:+-$if_idx}" | ||||
| 	if_idx=$((${if_idx:-0} + 1)) | ||||
|  | ||||
| 	append active_ifnames "$ifname" | ||||
| 	set_default wds 0 | ||||
| 	set_default powersave 0 | ||||
| 	json_add_string _ifname "$ifname" | ||||
|  | ||||
| 	default_macaddr= | ||||
| 	[ -n "$macaddr" ] || { | ||||
| 		macaddr="$(mac80211_generate_mac $phy)" | ||||
|  		macidx="$(($macidx + 1))" | ||||
| 		default_macaddr=1 | ||||
| 	} | ||||
| 	json_add_string _macaddr "$macaddr" | ||||
| 	json_add_string _default_macaddr "$default_macaddr" | ||||
| 	json_select .. | ||||
|  | ||||
|  | ||||
| 	[ "$mode" == "ap" ] && { | ||||
| 		[ -z "$wpa_psk_file" ] && hostapd_set_psk "$ifname" | ||||
| 		[ -z "$vlan_file" ] && hostapd_set_vlan "$ifname" | ||||
| 	} | ||||
|  | ||||
| 	json_select config | ||||
|  | ||||
| 	# It is far easier to delete and create the desired interface | ||||
| 	case "$mode" in | ||||
| 		ap) | ||||
| 			# Hostapd will handle recreating the interface and | ||||
| 			# subsequent virtual APs belonging to the same PHY | ||||
| 			if [ -n "$hostapd_ctrl" ]; then | ||||
| 				type=bss | ||||
| 			else | ||||
| 				type=interface | ||||
| 			fi | ||||
|  | ||||
| 			mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return | ||||
|  | ||||
| 			[ -n "$hostapd_ctrl" ] || { | ||||
| 				ap_ifname="${ifname}" | ||||
| 				hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}" | ||||
| 			} | ||||
| 		;; | ||||
| 	esac | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| mac80211_prepare_iw_htmode() { | ||||
| @@ -763,19 +715,6 @@ mac80211_setup_monitor() { | ||||
| 	json_set_namespace "$prev" | ||||
| } | ||||
|  | ||||
| mac80211_set_vif_txpower() { | ||||
| 	local name="$1" | ||||
|  | ||||
| 	json_select config | ||||
| 	json_get_var ifname _ifname | ||||
| 	json_get_vars vif_txpower wds | ||||
| 	json_select .. | ||||
|  | ||||
| 	set_default wds 0 | ||||
| 	[ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed "${vif_txpower%%.*}00" | ||||
| 	[ "$wds" -gt 0 ] && echo 1 > /sys/kernel/debug/ieee80211/$phy/netdev\:$ifname/disable_offload | ||||
| } | ||||
|  | ||||
| wpa_supplicant_init_config() { | ||||
| 	json_set_namespace wpa_supp prev | ||||
|  | ||||
| @@ -880,19 +819,39 @@ mac80211_setup_supplicant() { | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| mac80211_setup_vif() { | ||||
| 	local name="$1" | ||||
| 	local failed | ||||
|  | ||||
| mac80211_prepare_vif() { | ||||
| 	json_select config | ||||
| 	json_get_var ifname _ifname | ||||
| 	json_get_var macaddr _macaddr | ||||
| 	json_get_var default_macaddr _default_macaddr | ||||
| 	json_get_vars mode wds powersave | ||||
|  | ||||
| 	set_default powersave 0 | ||||
| 	json_get_vars ifname mode ssid wds powersave macaddr enable wpa_psk_file vlan_file | ||||
|  | ||||
| 	[ -n "$ifname" ] || { | ||||
| 		local prefix; | ||||
|  | ||||
| 		case "$mode" in | ||||
| 		ap|sta|mesh) prefix=$mode;; | ||||
| 		adhoc) prefix=ibss;; | ||||
| 		monitor) prefix=mon;; | ||||
| 		esac | ||||
|  | ||||
| 		mac80211_set_ifname "$phy" "$prefix" | ||||
| 	} | ||||
|  | ||||
| 	append active_ifnames "$ifname" | ||||
|  | ||||
| 	default_macaddr= | ||||
| 	if [ -z "$macaddr" ]; then | ||||
| 		macaddr="$(mac80211_generate_mac $phy)" | ||||
| 		macidx="$(($macidx + 1))" | ||||
| 		default_macaddr=1 | ||||
| 	elif [ "$macaddr" = 'random' ]; then | ||||
| 		macaddr="$(macaddr_random)" | ||||
| 	fi | ||||
|  | ||||
| 	local failed= | ||||
| 	set_default wds 0 | ||||
| 	set_default powersave 0 | ||||
|  | ||||
| 	# It is far easier to delete and create the desired interface | ||||
| 	case "$mode" in | ||||
| 		mesh) | ||||
| 			json_get_vars $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING | ||||
| @@ -918,10 +877,48 @@ mac80211_setup_vif() { | ||||
| 		monitor) | ||||
| 			mac80211_setup_monitor | ||||
| 		;; | ||||
| 		ap) | ||||
| 			# Hostapd will handle recreating the interface and | ||||
| 			# subsequent virtual APs belonging to the same PHY | ||||
| 			if [ -n "$hostapd_ctrl" ]; then | ||||
| 				type=bss | ||||
| 			else | ||||
| 				type=interface | ||||
| 			fi | ||||
|  | ||||
| 			mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return | ||||
|  | ||||
| 			[ -n "$hostapd_ctrl" ] || { | ||||
| 				ap_ifname="${ifname}" | ||||
| 				hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}" | ||||
| 			} | ||||
| 		;; | ||||
| 	esac | ||||
|  | ||||
| 	[ -n "$failed" ] || { | ||||
| 		json_add_string _ifname "$ifname" | ||||
| 		json_add_string _macaddr "$macaddr" | ||||
| 		json_add_string _default_macaddr "$default_macaddr" | ||||
| 	} | ||||
|  | ||||
| 	json_select .. | ||||
| 	[ -n "$failed" ] || wireless_add_vif "$name" "$ifname" | ||||
|  | ||||
| 	[ "$mode" == "ap" ] && { | ||||
| 		[ -z "$wpa_psk_file" ] && hostapd_set_psk "$ifname" | ||||
| 		[ -z "$vlan_file" ] && hostapd_set_vlan "$ifname" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| mac80211_setup_vif() { | ||||
| 	local name="$1" | ||||
|  | ||||
| 	json_select config | ||||
| 	json_get_var ifname _ifname | ||||
| 	json_get_vars vif_txpower | ||||
| 	json_select .. | ||||
|  | ||||
| 	[ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed "${vif_txpower%%.*}00" | ||||
| 	[ -n "$ifname" ] && wireless_add_vif "$name" "$ifname" | ||||
| } | ||||
|  | ||||
| get_freq() { | ||||
| @@ -1073,7 +1070,6 @@ drv_mac80211_setup() { | ||||
| 	mac80211_prepare_iw_htmode | ||||
| 	active_ifnames= | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_prepare_vif | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_setup_vif | ||||
|  | ||||
| 	[ -x /usr/sbin/wpa_supplicant ] && wpa_supplicant_set_config "$phy" | ||||
| 	[ -x /usr/sbin/hostapd ] && hostapd_set_config "$phy" | ||||
| @@ -1084,7 +1080,7 @@ drv_mac80211_setup() { | ||||
| 	wdev_tool "$phy" set_config "$(json_dump)" $active_ifnames | ||||
| 	json_set_namespace "$prev" | ||||
|  | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_set_vif_txpower | ||||
| 	for_each_interface "ap sta adhoc mesh monitor" mac80211_setup_vif | ||||
| 	wireless_set_up | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin