mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-11-01 02:48:18 +00:00
ucentral: development update
* more mac80211/hapd script improvements * more led blink/off commands * update ucentral-schema * further improvement on maverick * various ipq807x led improvements Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
From 8cbdd62c20daadf82ac2058a85523bb7454f390b Mon Sep 17 00:00:00 2001
|
From 943d9c1ac5834d572273eef7db8fcec474943e91 Mon Sep 17 00:00:00 2001
|
||||||
From: John Crispin <john@phrozen.org>
|
From: John Crispin <john@phrozen.org>
|
||||||
Date: Thu, 27 May 2021 13:25:03 +0200
|
Date: Thu, 27 May 2021 13:25:03 +0200
|
||||||
Subject: [PATCH 01/36] mac80211: update to latest HEAD
|
Subject: [PATCH 02/36] mac80211: update to latest HEAD
|
||||||
|
|
||||||
Signed-off-by: John Crispin <john@phrozen.org>
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
---
|
---
|
||||||
@@ -9,7 +9,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
package/kernel/mac80211/ath.mk | 13 +-
|
package/kernel/mac80211/ath.mk | 13 +-
|
||||||
package/kernel/mac80211/broadcom.mk | 4 +-
|
package/kernel/mac80211/broadcom.mk | 4 +-
|
||||||
.../mac80211/files/lib/netifd/mac80211.sh | 36 -
|
.../mac80211/files/lib/netifd/mac80211.sh | 36 -
|
||||||
.../files/lib/netifd/wireless/mac80211.sh | 200 +++--
|
.../files/lib/netifd/wireless/mac80211.sh | 179 ++++-
|
||||||
.../mac80211/files/lib/wifi/mac80211.sh | 110 ++-
|
.../mac80211/files/lib/wifi/mac80211.sh | 110 ++-
|
||||||
package/kernel/mac80211/mac80211.sh.diff | 58 ++
|
package/kernel/mac80211/mac80211.sh.diff | 58 ++
|
||||||
.../patches/ath/402-ath_regd_optional.patch | 2 +-
|
.../patches/ath/402-ath_regd_optional.patch | 2 +-
|
||||||
@@ -87,7 +87,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
...11-minstrel_ht-fix-sample-time-check.patch | 23 +
|
...11-minstrel_ht-fix-sample-time-check.patch | 23 +
|
||||||
...iwlwifi-specific-workaround-that-bro.patch | 51 ++
|
...iwlwifi-specific-workaround-that-bro.patch | 51 ++
|
||||||
.../500-mac80211_configure_antenna_gain.patch | 24 +-
|
.../500-mac80211_configure_antenna_gain.patch | 24 +-
|
||||||
82 files changed, 1547 insertions(+), 1358 deletions(-)
|
82 files changed, 1546 insertions(+), 1338 deletions(-)
|
||||||
delete mode 100644 package/kernel/mac80211/files/lib/netifd/mac80211.sh
|
delete mode 100644 package/kernel/mac80211/files/lib/netifd/mac80211.sh
|
||||||
create mode 100644 package/kernel/mac80211/mac80211.sh.diff
|
create mode 100644 package/kernel/mac80211/mac80211.sh.diff
|
||||||
delete mode 100644 package/kernel/mac80211/patches/ath/560-ath9k-fix-transmitting-to-stations-in-dynamic-SMPS-m.patch
|
delete mode 100644 package/kernel/mac80211/patches/ath/560-ath9k-fix-transmitting-to-stations-in-dynamic-SMPS-m.patch
|
||||||
@@ -352,7 +352,7 @@ index 92e5c0e395..0000000000
|
|||||||
- done
|
- done
|
||||||
-}
|
-}
|
||||||
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
||||||
index 92c56afd24..d92f6605de 100644
|
index 92c56afd24..0b7a84d7c9 100644
|
||||||
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
||||||
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
||||||
@@ -1,7 +1,6 @@
|
@@ -1,7 +1,6 @@
|
||||||
@@ -608,7 +608,7 @@ index 92c56afd24..d92f6605de 100644
|
|||||||
mac80211_setup_supplicant_noctl $vif_enable || failed=1
|
mac80211_setup_supplicant_noctl $vif_enable || failed=1
|
||||||
else
|
else
|
||||||
mac80211_setup_adhoc $vif_enable
|
mac80211_setup_adhoc $vif_enable
|
||||||
@@ -849,9 +943,29 @@ mac80211_setup_vif() {
|
@@ -849,10 +943,30 @@ mac80211_setup_vif() {
|
||||||
|
|
||||||
get_freq() {
|
get_freq() {
|
||||||
local phy="$1"
|
local phy="$1"
|
||||||
@@ -628,33 +628,33 @@ index 92c56afd24..d92f6605de 100644
|
|||||||
+
|
+
|
||||||
+$1 ~ /Band/ {
|
+$1 ~ /Band/ {
|
||||||
+ band_match = band == $2
|
+ band_match = band == $2
|
||||||
+}
|
}
|
||||||
+
|
|
||||||
+band_match && $3 == "MHz" && $4 == channel {
|
+band_match && $3 == "MHz" && $4 == channel {
|
||||||
+ print $2
|
+ print $2
|
||||||
+ exit
|
+ exit
|
||||||
}
|
+}
|
||||||
+'
|
+'
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+
|
||||||
chan_is_dfs() {
|
chan_is_dfs() {
|
||||||
local phy="$1"
|
local phy="$1"
|
||||||
@@ -921,13 +1035,6 @@ drv_mac80211_setup() {
|
local chan="$2"
|
||||||
local found
|
@@ -907,10 +1021,8 @@ drv_mac80211_setup() {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
for wdev in $(list_phy_interfaces "$phy"); do
|
- [ -z "$(uci -q -P /var/state show wireless._${phy})" ] && {
|
||||||
- found=0
|
- uci -q -P /var/state set wireless._${phy}=phy
|
||||||
- for cwdev in $OLDAPLIST $OLDSPLIST $OLDUMLIST; do
|
- wireless_set_data phy="$phy"
|
||||||
- if [ "$wdev" = "$cwdev" ]; then
|
- }
|
||||||
- found=1
|
+ wireless_set_data phy="$phy"
|
||||||
- break
|
+ [ -z "$(uci -q -P /var/state show wireless._${phy})" ] && uci -q -P /var/state set wireless._${phy}=phy
|
||||||
- fi
|
|
||||||
- done
|
OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist)
|
||||||
if [ "$found" = "0" ]; then
|
OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist)
|
||||||
ip link set dev "$wdev" down
|
@@ -935,7 +1047,7 @@ drv_mac80211_setup() {
|
||||||
iw dev "$wdev" del
|
|
||||||
@@ -935,7 +1042,7 @@ drv_mac80211_setup() {
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# convert channel to frequency
|
# convert channel to frequency
|
||||||
@@ -663,48 +663,25 @@ index 92c56afd24..d92f6605de 100644
|
|||||||
|
|
||||||
[ -n "$country" ] && {
|
[ -n "$country" ] && {
|
||||||
iw reg get | grep -q "^country $country:" || {
|
iw reg get | grep -q "^country $country:" || {
|
||||||
@@ -992,33 +1099,24 @@ drv_mac80211_setup() {
|
@@ -1003,6 +1115,7 @@ drv_mac80211_setup() {
|
||||||
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
|
||||||
NEWAPLIST=
|
|
||||||
for_each_interface "ap" mac80211_prepare_vif
|
|
||||||
- NEW_MD5=$(test -e "${hostapd_conf_file}" && md5sum ${hostapd_conf_file})
|
|
||||||
- OLD_MD5=$(uci -q -P /var/state get wireless._${phy}.md5)
|
|
||||||
- if [ "${NEWAPLIST}" != "${OLDAPLIST}" ]; then
|
|
||||||
- mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
|
||||||
- fi
|
|
||||||
+ mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
|
||||||
[ -n "${NEWAPLIST}" ] && mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
|
||||||
local add_ap=0
|
|
||||||
local primary_ap=${NEWAPLIST%% *}
|
|
||||||
[ -n "$hostapd_ctrl" ] && {
|
[ -n "$hostapd_ctrl" ] && {
|
||||||
local no_reload=1
|
local no_reload=1
|
||||||
if [ -n "$(ubus list | grep hostapd.$primary_ap)" ]; then
|
if [ -n "$(ubus list | grep hostapd.$primary_ap)" ]; then
|
||||||
- [ "${NEW_MD5}" = "${OLD_MD5}" ] || {
|
+ no_reload=0
|
||||||
- ubus call hostapd.$primary_ap reload
|
[ "${NEW_MD5}" = "${OLD_MD5}" ] || {
|
||||||
- no_reload=$?
|
ubus call hostapd.$primary_ap reload
|
||||||
- if [ "$no_reload" != "0" ]; then
|
no_reload=$?
|
||||||
- mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
@@ -1077,6 +1190,10 @@ drv_mac80211_teardown() {
|
||||||
- mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)"
|
json_select data
|
||||||
- mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)"
|
json_get_vars phy
|
||||||
- sleep 2
|
json_select ..
|
||||||
- mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
+ [ -n "$phy" ] || {
|
||||||
- for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
+ echo "Bug: PHY is undefined for device '$1'"
|
||||||
- fi
|
+ return 1
|
||||||
- }
|
+ }
|
||||||
+ mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
|
||||||
+ mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)"
|
mac80211_interface_cleanup "$phy"
|
||||||
+ mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)"
|
uci -q -P /var/state revert wireless._${phy}
|
||||||
+ sleep 2
|
|
||||||
+ mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
|
||||||
+ for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
|
||||||
fi
|
|
||||||
if [ "$no_reload" != "0" ]; then
|
|
||||||
add_ap=1
|
|
||||||
ubus wait_for hostapd
|
|
||||||
+ ip link set $primary_ap down
|
|
||||||
local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")"
|
|
||||||
ret="$?"
|
|
||||||
[ "$ret" != 0 -o -z "$hostapd_res" ] && {
|
|
||||||
diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
|
diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
|
||||||
index 3e99f06693..6aa46b0c74 100644
|
index 3e99f06693..6aa46b0c74 100644
|
||||||
--- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh
|
--- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
From 0c477e5d60ab6c19df882f010a58d911d77ae657 Mon Sep 17 00:00:00 2001
|
From 1df5febb67e8f2980ad38e1e320dd1d5c3588610 Mon Sep 17 00:00:00 2001
|
||||||
From: John Crispin <john@phrozen.org>
|
From: John Crispin <john@phrozen.org>
|
||||||
Date: Thu, 27 May 2021 13:25:19 +0200
|
Date: Thu, 27 May 2021 13:25:19 +0200
|
||||||
Subject: [PATCH 01/34] hostapd: upsate to latest HEAD
|
Subject: [PATCH 03/36] hostapd: upsate to latest HEAD
|
||||||
|
|
||||||
Signed-off-by: John Crispin <john@phrozen.org>
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
---
|
---
|
||||||
package/network/services/hostapd/Makefile | 9 +-
|
package/network/services/hostapd/Makefile | 9 +-
|
||||||
.../hostapd/files/hostapd-basic.config | 2 +-
|
.../hostapd/files/hostapd-basic.config | 2 +-
|
||||||
.../hostapd/files/hostapd-full.config | 4 +-
|
.../hostapd/files/hostapd-full.config | 4 +-
|
||||||
.../network/services/hostapd/files/hostapd.sh | 122 ++++++--
|
.../network/services/hostapd/files/hostapd.sh | 152 ++++++++--
|
||||||
...-fix-frequency-setup-with-HE-enabled.patch | 196 -------------
|
...-fix-frequency-setup-with-HE-enabled.patch | 196 -------------
|
||||||
.../001-wolfssl-init-RNG-with-ECC-key.patch | 43 +++
|
.../001-wolfssl-init-RNG-with-ECC-key.patch | 43 +++
|
||||||
...-init-order-disable-pri-sec-channel-.patch | 126 ---------
|
...-init-order-disable-pri-sec-channel-.patch | 126 ---------
|
||||||
@@ -66,7 +66,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
...of-secondary-device-types-for-P2P-gr.patch | 33 ---
|
...of-secondary-device-types-for-P2P-gr.patch | 33 ---
|
||||||
.../services/hostapd/src/src/ap/ubus.c | 70 ++++-
|
.../services/hostapd/src/src/ap/ubus.c | 70 ++++-
|
||||||
.../services/hostapd/src/src/ap/ubus.h | 16 ++
|
.../services/hostapd/src/src/ap/ubus.h | 16 ++
|
||||||
61 files changed, 696 insertions(+), 2312 deletions(-)
|
61 files changed, 718 insertions(+), 2320 deletions(-)
|
||||||
delete mode 100644 package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
|
delete mode 100644 package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
|
||||||
create mode 100644 package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
|
create mode 100644 package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch
|
||||||
delete mode 100644 package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch
|
delete mode 100644 package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch
|
||||||
@@ -160,30 +160,20 @@ index df272e443a..61b6daf861 100644
|
|||||||
# EAP-SAKE for the integrated EAP server
|
# EAP-SAKE for the integrated EAP server
|
||||||
#CONFIG_EAP_SAKE=y
|
#CONFIG_EAP_SAKE=y
|
||||||
diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
|
diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
|
||||||
index 45a49b8faa..399352aa89 100644
|
index 45a49b8faa..7d035a299b 100644
|
||||||
--- a/package/network/services/hostapd/files/hostapd.sh
|
--- a/package/network/services/hostapd/files/hostapd.sh
|
||||||
+++ b/package/network/services/hostapd/files/hostapd.sh
|
+++ b/package/network/services/hostapd/files/hostapd.sh
|
||||||
@@ -49,6 +49,11 @@ hostapd_append_wpa_key_mgmt() {
|
@@ -91,14 +91,19 @@ hostapd_add_log_config() {
|
||||||
eap192)
|
|
||||||
append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
|
|
||||||
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
|
|
||||||
+ [ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256"
|
|
||||||
+ ;;
|
|
||||||
+ eap256)
|
|
||||||
+ append wpa_key_mgmt "WPA-EAP-SHA256"
|
|
||||||
+ [ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
|
|
||||||
;;
|
|
||||||
eap-eap192)
|
|
||||||
append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
|
|
||||||
@@ -91,6 +96,7 @@ hostapd_add_log_config() {
|
|
||||||
hostapd_common_add_device_config() {
|
hostapd_common_add_device_config() {
|
||||||
config_add_array basic_rate
|
config_add_array basic_rate
|
||||||
config_add_array supported_rates
|
config_add_array supported_rates
|
||||||
+ config_add_string beacon_rate
|
+ config_add_string beacon_rate
|
||||||
|
|
||||||
config_add_string country
|
- config_add_string country
|
||||||
|
+ config_add_string country country3
|
||||||
config_add_boolean country_ie doth
|
config_add_boolean country_ie doth
|
||||||
@@ -99,6 +105,10 @@ hostapd_common_add_device_config() {
|
config_add_boolean spectrum_mgmt_required
|
||||||
|
config_add_int local_pwr_constraint
|
||||||
config_add_string require_mode
|
config_add_string require_mode
|
||||||
config_add_boolean legacy_rates
|
config_add_boolean legacy_rates
|
||||||
config_add_int cell_density
|
config_add_int cell_density
|
||||||
@@ -194,17 +184,27 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
config_add_string acs_chan_bias
|
config_add_string acs_chan_bias
|
||||||
config_add_array hostapd_options
|
config_add_array hostapd_options
|
||||||
@@ -115,7 +125,8 @@ hostapd_prepare_device_config() {
|
@@ -114,8 +119,9 @@ hostapd_prepare_device_config() {
|
||||||
|
|
||||||
local base_cfg=
|
local base_cfg=
|
||||||
|
|
||||||
json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
|
- json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
|
||||||
- acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density
|
- acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density
|
||||||
|
+ json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
|
||||||
+ acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \
|
+ acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \
|
||||||
+ rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc
|
+ rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc
|
||||||
|
|
||||||
hostapd_set_log_options base_cfg
|
hostapd_set_log_options base_cfg
|
||||||
|
|
||||||
@@ -206,11 +217,16 @@ hostapd_prepare_device_config() {
|
@@ -128,6 +134,7 @@ hostapd_prepare_device_config() {
|
||||||
|
|
||||||
|
[ -n "$country" ] && {
|
||||||
|
append base_cfg "country_code=$country" "$N"
|
||||||
|
+ [ -n "$country3" ] && append base_cfg "country3=$country3" "$N"
|
||||||
|
|
||||||
|
[ "$country_ie" -gt 0 ] && {
|
||||||
|
append base_cfg "ieee80211d=1" "$N"
|
||||||
|
@@ -206,11 +213,16 @@ hostapd_prepare_device_config() {
|
||||||
hostapd_add_rate brlist "$br"
|
hostapd_add_rate brlist "$br"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -221,7 +221,16 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
json_get_values opts hostapd_options
|
json_get_values opts hostapd_options
|
||||||
for val in $opts; do
|
for val in $opts; do
|
||||||
@@ -266,7 +282,7 @@ hostapd_common_add_bss_config() {
|
@@ -251,6 +263,8 @@ hostapd_common_add_bss_config() {
|
||||||
|
config_add_int acct_port
|
||||||
|
config_add_int acct_interval
|
||||||
|
|
||||||
|
+ config_add_int bss_load_update_period chan_util_avg_period
|
||||||
|
+
|
||||||
|
config_add_string dae_client
|
||||||
|
config_add_string dae_secret
|
||||||
|
config_add_int dae_port
|
||||||
|
@@ -266,7 +280,7 @@ hostapd_common_add_bss_config() {
|
||||||
config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2
|
config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2
|
||||||
config_add_string ieee80211w_mgmt_cipher
|
config_add_string ieee80211w_mgmt_cipher
|
||||||
|
|
||||||
@@ -230,6 +239,26 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
config_add_string vlan_tagged_interface vlan_bridge
|
config_add_string vlan_tagged_interface vlan_bridge
|
||||||
config_add_string vlan_file
|
config_add_string vlan_file
|
||||||
|
|
||||||
|
@@ -281,9 +295,10 @@ hostapd_common_add_bss_config() {
|
||||||
|
config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin
|
||||||
|
config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key
|
||||||
|
|
||||||
|
- config_add_boolean wnm_sleep_mode bss_transition
|
||||||
|
+ config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
|
||||||
|
config_add_int time_advertisement
|
||||||
|
config_add_string time_zone
|
||||||
|
+ config_add_string vendor_elements
|
||||||
|
|
||||||
|
config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report
|
||||||
|
|
||||||
|
@@ -308,6 +323,7 @@ hostapd_common_add_bss_config() {
|
||||||
|
config_add_array supported_rates
|
||||||
|
|
||||||
|
config_add_boolean sae_require_mfp
|
||||||
|
+ config_add_int sae_pwe
|
||||||
|
|
||||||
|
config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string'
|
||||||
|
|
||||||
@@ -316,7 +332,7 @@ hostapd_common_add_bss_config() {
|
@@ -316,7 +332,7 @@ hostapd_common_add_bss_config() {
|
||||||
config_add_int iw_ipaddr_type_availability iw_gas_address3
|
config_add_int iw_ipaddr_type_availability iw_gas_address3
|
||||||
config_add_string iw_hessid iw_network_auth_type iw_qos_map_set
|
config_add_string iw_hessid iw_network_auth_type iw_qos_map_set
|
||||||
@@ -239,7 +268,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
config_add_boolean hs20 disable_dgaf osen
|
config_add_boolean hs20 disable_dgaf osen
|
||||||
config_add_int anqp_domain_id
|
config_add_int anqp_domain_id
|
||||||
@@ -327,12 +343,21 @@ hostapd_common_add_bss_config() {
|
@@ -327,12 +343,22 @@ hostapd_common_add_bss_config() {
|
||||||
config_add_array hs20_conn_capab
|
config_add_array hs20_conn_capab
|
||||||
config_add_string osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp
|
config_add_string osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp
|
||||||
|
|
||||||
@@ -252,6 +281,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
+ config_add_boolean multicast_to_unicast proxy_arp per_sta_vif
|
+ config_add_boolean multicast_to_unicast proxy_arp per_sta_vif
|
||||||
|
|
||||||
config_add_array hostapd_bss_options
|
config_add_array hostapd_bss_options
|
||||||
|
+ config_add_boolean default_disabled
|
||||||
+
|
+
|
||||||
+ config_add_boolean request_cui
|
+ config_add_boolean request_cui
|
||||||
+ config_add_array radius_auth_req_attr
|
+ config_add_array radius_auth_req_attr
|
||||||
@@ -262,7 +292,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
hostapd_set_vlan_file() {
|
hostapd_set_vlan_file() {
|
||||||
@@ -396,10 +421,22 @@ append_iw_nai_realm() {
|
@@ -396,10 +422,22 @@ append_iw_nai_realm() {
|
||||||
[ -n "$1" ] && append bss_conf "nai_realm=$1" "$N"
|
[ -n "$1" ] && append bss_conf "nai_realm=$1" "$N"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,7 +315,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
append_osu_provider_service_desc() {
|
append_osu_provider_service_desc() {
|
||||||
append bss_conf "osu_service_desc=$1" "$N"
|
append bss_conf "osu_service_desc=$1" "$N"
|
||||||
}
|
}
|
||||||
@@ -447,6 +484,7 @@ append_osu_provider() {
|
@@ -447,6 +485,7 @@ append_osu_provider() {
|
||||||
append bss_conf "osu_method_list=$osu_method_list" "$N"
|
append bss_conf "osu_method_list=$osu_method_list" "$N"
|
||||||
|
|
||||||
config_list_foreach "$1" osu_service_desc append_osu_provider_service_desc
|
config_list_foreach "$1" osu_service_desc append_osu_provider_service_desc
|
||||||
@@ -293,7 +323,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
config_list_foreach "$1" osu_icon append_osu_icon
|
config_list_foreach "$1" osu_icon append_osu_icon
|
||||||
|
|
||||||
append bss_conf "$N"
|
append bss_conf "$N"
|
||||||
@@ -456,6 +494,14 @@ append_hs20_conn_capab() {
|
@@ -456,6 +495,14 @@ append_hs20_conn_capab() {
|
||||||
[ -n "$1" ] && append bss_conf "hs20_conn_capab=$1" "$N"
|
[ -n "$1" ] && append bss_conf "hs20_conn_capab=$1" "$N"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,17 +338,22 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
append_airtime_sta_weight() {
|
append_airtime_sta_weight() {
|
||||||
[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N"
|
[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N"
|
||||||
}
|
}
|
||||||
@@ -482,7 +528,8 @@ hostapd_set_bss_options() {
|
@@ -479,10 +526,12 @@ hostapd_set_bss_options() {
|
||||||
bss_load_update_period chan_util_avg_period sae_require_mfp \
|
macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \
|
||||||
|
iapp_interface eapol_version dynamic_vlan ieee80211w nasid \
|
||||||
|
acct_server acct_secret acct_port acct_interval \
|
||||||
|
- bss_load_update_period chan_util_avg_period sae_require_mfp \
|
||||||
|
+ bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \
|
||||||
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \
|
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \
|
||||||
airtime_bss_weight airtime_bss_limit airtime_sta_weight \
|
airtime_bss_weight airtime_bss_limit airtime_sta_weight \
|
||||||
- multicast_to_unicast per_sta_vif
|
- multicast_to_unicast per_sta_vif
|
||||||
+ multicast_to_unicast proxy_arp per_sta_vif \
|
+ multicast_to_unicast proxy_arp per_sta_vif \
|
||||||
+ eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id
|
+ eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \
|
||||||
|
+ vendor_elements
|
||||||
|
|
||||||
set_default isolate 0
|
set_default isolate 0
|
||||||
set_default maxassoc 0
|
set_default maxassoc 0
|
||||||
@@ -503,6 +550,7 @@ hostapd_set_bss_options() {
|
@@ -503,6 +552,7 @@ hostapd_set_bss_options() {
|
||||||
set_default multi_ap 0
|
set_default multi_ap 0
|
||||||
set_default airtime_bss_weight 0
|
set_default airtime_bss_weight 0
|
||||||
set_default airtime_bss_limit 0
|
set_default airtime_bss_limit 0
|
||||||
@@ -326,7 +361,15 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
append bss_conf "ctrl_interface=/var/run/hostapd"
|
append bss_conf "ctrl_interface=/var/run/hostapd"
|
||||||
if [ "$isolate" -gt 0 ]; then
|
if [ "$isolate" -gt 0 ]; then
|
||||||
@@ -547,6 +595,7 @@ hostapd_set_bss_options() {
|
@@ -529,6 +579,7 @@ hostapd_set_bss_options() {
|
||||||
|
append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N"
|
||||||
|
append bss_conf "utf8_ssid=$utf8_ssid" "$N"
|
||||||
|
append bss_conf "multi_ap=$multi_ap" "$N"
|
||||||
|
+ [ -n "$vendor_elements" ] && append bss_conf "vendor_elements=$vendor_elements" "$N"
|
||||||
|
|
||||||
|
[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N"
|
||||||
|
|
||||||
|
@@ -547,6 +598,7 @@ hostapd_set_bss_options() {
|
||||||
append bss_conf "acct_server_shared_secret=$acct_secret" "$N"
|
append bss_conf "acct_server_shared_secret=$acct_secret" "$N"
|
||||||
[ -n "$acct_interval" ] && \
|
[ -n "$acct_interval" ] && \
|
||||||
append bss_conf "radius_acct_interim_interval=$acct_interval" "$N"
|
append bss_conf "radius_acct_interim_interval=$acct_interval" "$N"
|
||||||
@@ -334,7 +377,15 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "$auth_type" in
|
case "$auth_type" in
|
||||||
@@ -601,7 +650,7 @@ hostapd_set_bss_options() {
|
@@ -560,6 +612,7 @@ hostapd_set_bss_options() {
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N"
|
||||||
|
+ [ -n "$sae_pwe" ] && append bss_conf "sae_pwe=$sae_pwe" "$N"
|
||||||
|
|
||||||
|
local vlan_possible=""
|
||||||
|
|
||||||
|
@@ -601,7 +654,7 @@ hostapd_set_bss_options() {
|
||||||
auth_server auth_secret auth_port \
|
auth_server auth_secret auth_port \
|
||||||
dae_client dae_secret dae_port \
|
dae_client dae_secret dae_port \
|
||||||
ownip radius_client_addr \
|
ownip radius_client_addr \
|
||||||
@@ -343,7 +394,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
# radius can provide VLAN ID for clients
|
# radius can provide VLAN ID for clients
|
||||||
vlan_possible=1
|
vlan_possible=1
|
||||||
@@ -613,18 +662,22 @@ hostapd_set_bss_options() {
|
@@ -613,18 +666,22 @@ hostapd_set_bss_options() {
|
||||||
|
|
||||||
set_default auth_port 1812
|
set_default auth_port 1812
|
||||||
set_default dae_port 3799
|
set_default dae_port 3799
|
||||||
@@ -370,7 +421,27 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N"
|
[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N"
|
||||||
[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N"
|
[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N"
|
||||||
@@ -733,7 +786,7 @@ hostapd_set_bss_options() {
|
@@ -703,13 +760,17 @@ hostapd_set_bss_options() {
|
||||||
|
append bss_conf "iapp_interface=$ifname" "$N"
|
||||||
|
}
|
||||||
|
|
||||||
|
- json_get_vars time_advertisement time_zone wnm_sleep_mode bss_transition
|
||||||
|
+ json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
|
||||||
|
set_default bss_transition 0
|
||||||
|
set_default wnm_sleep_mode 0
|
||||||
|
+ set_default wnm_sleep_mode_no_keys 0
|
||||||
|
|
||||||
|
[ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N"
|
||||||
|
[ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N"
|
||||||
|
- [ "$wnm_sleep_mode" -eq "1" ] && append bss_conf "wnm_sleep_mode=1" "$N"
|
||||||
|
+ if [ "$wnm_sleep_mode" -eq "1" ]; then
|
||||||
|
+ append bss_conf "wnm_sleep_mode=1" "$N"
|
||||||
|
+ [ "$wnm_sleep_mode_no_keys" -eq "1" ] && append bss_conf "wnm_sleep_mode_no_keys=1" "$N"
|
||||||
|
+ fi
|
||||||
|
[ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N"
|
||||||
|
|
||||||
|
json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report
|
||||||
|
@@ -733,7 +794,7 @@ hostapd_set_bss_options() {
|
||||||
append bss_conf "ftm_responder=1" "$N"
|
append bss_conf "ftm_responder=1" "$N"
|
||||||
[ "$stationary_ap" -eq "1" ] && append bss_conf "stationary_ap=1" "$N"
|
[ "$stationary_ap" -eq "1" ] && append bss_conf "stationary_ap=1" "$N"
|
||||||
[ -n "$lci" ] && append bss_conf "lci=$lci" "$N"
|
[ -n "$lci" ] && append bss_conf "lci=$lci" "$N"
|
||||||
@@ -379,7 +450,15 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -771,6 +824,13 @@ hostapd_set_bss_options() {
|
@@ -757,6 +818,7 @@ hostapd_set_bss_options() {
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
+ [ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N"
|
||||||
|
append bss_conf "mobility_domain=$mobility_domain" "$N"
|
||||||
|
append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N"
|
||||||
|
append bss_conf "ft_over_ds=$ft_over_ds" "$N"
|
||||||
|
@@ -771,6 +833,13 @@ hostapd_set_bss_options() {
|
||||||
set_default r0_key_lifetime 10000
|
set_default r0_key_lifetime 10000
|
||||||
set_default pmk_r1_push 0
|
set_default pmk_r1_push 0
|
||||||
|
|
||||||
@@ -393,7 +472,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N"
|
[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N"
|
||||||
append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N"
|
append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N"
|
||||||
append bss_conf "pmk_r1_push=$pmk_r1_push" "$N"
|
append bss_conf "pmk_r1_push=$pmk_r1_push" "$N"
|
||||||
@@ -856,13 +916,17 @@ hostapd_set_bss_options() {
|
@@ -856,13 +925,17 @@ hostapd_set_bss_options() {
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && {
|
[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && {
|
||||||
@@ -413,7 +492,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
[ -n "$vlan_tagged_interface" ] && \
|
[ -n "$vlan_tagged_interface" ] && \
|
||||||
append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N"
|
append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N"
|
||||||
[ -n "$vlan_file" ] && {
|
[ -n "$vlan_file" ] && {
|
||||||
@@ -875,6 +939,7 @@ hostapd_set_bss_options() {
|
@@ -875,6 +948,7 @@ hostapd_set_bss_options() {
|
||||||
json_get_vars iw_hessid iw_venue_group iw_venue_type iw_network_auth_type
|
json_get_vars iw_hessid iw_venue_group iw_venue_type iw_network_auth_type
|
||||||
json_get_vars iw_roaming_consortium iw_domain_name iw_anqp_3gpp_cell_net iw_nai_realm
|
json_get_vars iw_roaming_consortium iw_domain_name iw_anqp_3gpp_cell_net iw_nai_realm
|
||||||
json_get_vars iw_anqp_elem iw_qos_map_set iw_ipaddr_type_availability iw_gas_address3
|
json_get_vars iw_anqp_elem iw_qos_map_set iw_ipaddr_type_availability iw_gas_address3
|
||||||
@@ -421,7 +500,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
set_default iw_enabled 0
|
set_default iw_enabled 0
|
||||||
if [ "$iw_enabled" = "1" ]; then
|
if [ "$iw_enabled" = "1" ]; then
|
||||||
@@ -903,6 +968,8 @@ hostapd_set_bss_options() {
|
@@ -903,6 +977,8 @@ hostapd_set_bss_options() {
|
||||||
json_for_each_item append_iw_roaming_consortium iw_roaming_consortium
|
json_for_each_item append_iw_roaming_consortium iw_roaming_consortium
|
||||||
json_for_each_item append_iw_anqp_elem iw_anqp_elem
|
json_for_each_item append_iw_anqp_elem iw_anqp_elem
|
||||||
json_for_each_item append_iw_nai_realm iw_nai_realm
|
json_for_each_item append_iw_nai_realm iw_nai_realm
|
||||||
@@ -430,7 +509,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
iw_domain_name_conf=
|
iw_domain_name_conf=
|
||||||
json_for_each_item append_iw_domain_name iw_domain_name
|
json_for_each_item append_iw_domain_name iw_domain_name
|
||||||
@@ -917,9 +984,11 @@ hostapd_set_bss_options() {
|
@@ -917,9 +993,11 @@ hostapd_set_bss_options() {
|
||||||
|
|
||||||
|
|
||||||
local hs20 disable_dgaf osen anqp_domain_id hs20_deauth_req_timeout \
|
local hs20 disable_dgaf osen anqp_domain_id hs20_deauth_req_timeout \
|
||||||
@@ -444,7 +523,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
set_default hs20 0
|
set_default hs20 0
|
||||||
set_default disable_dgaf $hs20
|
set_default disable_dgaf $hs20
|
||||||
@@ -938,16 +1007,31 @@ hostapd_set_bss_options() {
|
@@ -938,16 +1016,31 @@ hostapd_set_bss_options() {
|
||||||
[ -n "$hs20_operating_class" ] && append bss_conf "hs20_operating_class=$hs20_operating_class" "$N"
|
[ -n "$hs20_operating_class" ] && append bss_conf "hs20_operating_class=$hs20_operating_class" "$N"
|
||||||
[ -n "$hs20_t_c_filename" ] && append bss_conf "hs20_t_c_filename=$hs20_t_c_filename" "$N"
|
[ -n "$hs20_t_c_filename" ] && append bss_conf "hs20_t_c_filename=$hs20_t_c_filename" "$N"
|
||||||
[ -n "$hs20_t_c_timestamp" ] && append bss_conf "hs20_t_c_timestamp=$hs20_t_c_timestamp" "$N"
|
[ -n "$hs20_t_c_timestamp" ] && append bss_conf "hs20_t_c_timestamp=$hs20_t_c_timestamp" "$N"
|
||||||
@@ -477,7 +556,7 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
|
|
||||||
set_default per_sta_vif 0
|
set_default per_sta_vif 0
|
||||||
if [ "$per_sta_vif" -gt 0 ]; then
|
if [ "$per_sta_vif" -gt 0 ]; then
|
||||||
@@ -1079,9 +1163,9 @@ wpa_supplicant_set_fixed_freq() {
|
@@ -1079,9 +1172,9 @@ wpa_supplicant_set_fixed_freq() {
|
||||||
VHT*) append network_data "vht=1" "$N$T";;
|
VHT*) append network_data "vht=1" "$N$T";;
|
||||||
esac
|
esac
|
||||||
case "$htmode" in
|
case "$htmode" in
|
||||||
@@ -490,6 +569,36 @@ index 45a49b8faa..399352aa89 100644
|
|||||||
*) append network_data "disable_vht=1" "$N$T";;
|
*) append network_data "disable_vht=1" "$N$T";;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@@ -1099,7 +1192,8 @@ wpa_supplicant_add_network() {
|
||||||
|
ssid bssid key \
|
||||||
|
basic_rate mcast_rate \
|
||||||
|
ieee80211w ieee80211r \
|
||||||
|
- multi_ap
|
||||||
|
+ multi_ap \
|
||||||
|
+ default_disabled
|
||||||
|
|
||||||
|
case "$auth_type" in
|
||||||
|
sae|owe|eap192|eap-eap192)
|
||||||
|
@@ -1112,6 +1206,7 @@ wpa_supplicant_add_network() {
|
||||||
|
|
||||||
|
set_default ieee80211r 0
|
||||||
|
set_default multi_ap 0
|
||||||
|
+ set_default default_disabled 0
|
||||||
|
|
||||||
|
local key_mgmt='NONE'
|
||||||
|
local network_data=
|
||||||
|
@@ -1143,7 +1238,10 @@ wpa_supplicant_add_network() {
|
||||||
|
scan_ssid=""
|
||||||
|
}
|
||||||
|
|
||||||
|
- [ "$multi_ap" = 1 -a "$_w_mode" = "sta" ] && append network_data "multi_ap_backhaul_sta=1" "$N$T"
|
||||||
|
+ [ "$_w_mode" = "sta" ] && {
|
||||||
|
+ [ "$multi_ap" = 1 ] && append network_data "multi_ap_backhaul_sta=1" "$N$T"
|
||||||
|
+ [ "$default_disabled" = 1 ] && append network_data "disabled=1" "$N$T"
|
||||||
|
+ }
|
||||||
|
|
||||||
|
case "$auth_type" in
|
||||||
|
none) ;;
|
||||||
diff --git a/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch b/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
|
diff --git a/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch b/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
|
||||||
deleted file mode 100644
|
deleted file mode 100644
|
||||||
index 37c17c50af..0000000000
|
index 37c17c50af..0000000000
|
||||||
@@ -4973,3 +5082,4 @@ index e16017394f..acdac74360 100644
|
|||||||
{
|
{
|
||||||
--
|
--
|
||||||
2.25.1
|
2.25.1
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ USE_PROCD=1
|
|||||||
PROG=/usr/sbin/maverick
|
PROG=/usr/sbin/maverick
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
[ -f /etc/ucentral/ucentral.active ] && return 0
|
active=$(readlink /etc/ucentral/ucentral.active)
|
||||||
|
[ -n "$active" -a "$active" != "/etc/ucentral/ucentral.cfg.0000000001" ] && return 0
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
procd_set_param command "$PROG"
|
procd_set_param command "$PROG"
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ PKG_RELEASE:=1
|
|||||||
PKG_SOURCE_URL=https://github.com/blogic/ucentral-schema.git
|
PKG_SOURCE_URL=https://github.com/blogic/ucentral-schema.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_DATE:=2021-02-15
|
PKG_SOURCE_DATE:=2021-02-15
|
||||||
PKG_SOURCE_VERSION:=d40781dbab7a1574d03061e2cae5ba92cdba1c55
|
PKG_SOURCE_VERSION:=1364520714bc7666705b1395714a2d752c0e9b67
|
||||||
|
|
||||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"uuid": 2,
|
||||||
|
"unit": {
|
||||||
|
"name": "test-name",
|
||||||
|
"location": "garden",
|
||||||
|
"timezone": "EST5EDT,M3.2.0,M11.1.0",
|
||||||
|
"led-active": false
|
||||||
|
},
|
||||||
|
"radios": [
|
||||||
|
{
|
||||||
|
"band": "2G",
|
||||||
|
"country": "CA",
|
||||||
|
"channel-mode": "HE",
|
||||||
|
"channel-width": 80,
|
||||||
|
"channel": 32
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"interfaces": [
|
||||||
|
{
|
||||||
|
"name": "WAN",
|
||||||
|
"role": "upstream",
|
||||||
|
"services": [ "lldp" ],
|
||||||
|
"ethernet": [
|
||||||
|
{
|
||||||
|
"select-ports": [
|
||||||
|
"WAN*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ipv4": {
|
||||||
|
"addressing": "dynamic"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LAN",
|
||||||
|
"role": "downstream",
|
||||||
|
"services": [ "ssh", "lldp" ],
|
||||||
|
"ethernet": [
|
||||||
|
{
|
||||||
|
"select-ports": [
|
||||||
|
"LAN*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ipv4": {
|
||||||
|
"addressing": "static",
|
||||||
|
"subnet": "192.168.1.1/24",
|
||||||
|
"dhcp": {
|
||||||
|
"lease-first": 10,
|
||||||
|
"lease-count": 100,
|
||||||
|
"lease-time": "6h"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metrics": {
|
||||||
|
"statistics": {
|
||||||
|
"interval": 120,
|
||||||
|
"types": [ "ssids", "lldp", "clients" ]
|
||||||
|
},
|
||||||
|
"health": {
|
||||||
|
"interval": 120
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"lldp": {
|
||||||
|
"describe": "uCentral",
|
||||||
|
"location": "universe"
|
||||||
|
},
|
||||||
|
"ssh": {
|
||||||
|
"port": 22
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,9 +2,7 @@
|
|||||||
|
|
||||||
timeout=$1
|
timeout=$1
|
||||||
|
|
||||||
. /etc/diag.sh
|
/etc/init.d/led blink
|
||||||
set_state upgrade
|
|
||||||
sleep $1
|
sleep $1
|
||||||
status_led_off
|
/etc/init.d/led restart
|
||||||
set_state done
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -51,10 +51,6 @@ hostapd_append_wpa_key_mgmt() {
|
|||||||
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
|
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
|
||||||
[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256"
|
[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256"
|
||||||
;;
|
;;
|
||||||
eap256)
|
|
||||||
append wpa_key_mgmt "WPA-EAP-SHA256"
|
|
||||||
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP"
|
|
||||||
;;
|
|
||||||
eap-eap192)
|
eap-eap192)
|
||||||
append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
|
append wpa_key_mgmt "WPA-EAP-SUITE-B-192"
|
||||||
append wpa_key_mgmt "WPA-EAP"
|
append wpa_key_mgmt "WPA-EAP"
|
||||||
@@ -98,7 +94,7 @@ hostapd_common_add_device_config() {
|
|||||||
config_add_array supported_rates
|
config_add_array supported_rates
|
||||||
config_add_string beacon_rate
|
config_add_string beacon_rate
|
||||||
|
|
||||||
config_add_string country
|
config_add_string country country3
|
||||||
config_add_boolean country_ie doth
|
config_add_boolean country_ie doth
|
||||||
config_add_boolean spectrum_mgmt_required
|
config_add_boolean spectrum_mgmt_required
|
||||||
config_add_int local_pwr_constraint
|
config_add_int local_pwr_constraint
|
||||||
@@ -124,7 +120,7 @@ hostapd_prepare_device_config() {
|
|||||||
|
|
||||||
local base_cfg=
|
local base_cfg=
|
||||||
|
|
||||||
json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
|
json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
|
||||||
acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \
|
acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \
|
||||||
rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc
|
rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc
|
||||||
|
|
||||||
@@ -139,6 +135,7 @@ hostapd_prepare_device_config() {
|
|||||||
|
|
||||||
[ -n "$country" ] && {
|
[ -n "$country" ] && {
|
||||||
append base_cfg "country_code=$country" "$N"
|
append base_cfg "country_code=$country" "$N"
|
||||||
|
[ -n "$country3" ] && append base_cfg "country3=$country3" "$N"
|
||||||
|
|
||||||
[ "$country_ie" -gt 0 ] && {
|
[ "$country_ie" -gt 0 ] && {
|
||||||
append base_cfg "ieee80211d=1" "$N"
|
append base_cfg "ieee80211d=1" "$N"
|
||||||
@@ -267,6 +264,8 @@ hostapd_common_add_bss_config() {
|
|||||||
config_add_int acct_port
|
config_add_int acct_port
|
||||||
config_add_int acct_interval
|
config_add_int acct_interval
|
||||||
|
|
||||||
|
config_add_int bss_load_update_period chan_util_avg_period
|
||||||
|
|
||||||
config_add_string dae_client
|
config_add_string dae_client
|
||||||
config_add_string dae_secret
|
config_add_string dae_secret
|
||||||
config_add_int dae_port
|
config_add_int dae_port
|
||||||
@@ -297,9 +296,10 @@ hostapd_common_add_bss_config() {
|
|||||||
config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin
|
config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin
|
||||||
config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key
|
config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key
|
||||||
|
|
||||||
config_add_boolean wnm_sleep_mode bss_transition
|
config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
|
||||||
config_add_int time_advertisement
|
config_add_int time_advertisement
|
||||||
config_add_string time_zone
|
config_add_string time_zone
|
||||||
|
config_add_string vendor_elements
|
||||||
|
|
||||||
config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report
|
config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report
|
||||||
|
|
||||||
@@ -324,6 +324,7 @@ hostapd_common_add_bss_config() {
|
|||||||
config_add_array supported_rates
|
config_add_array supported_rates
|
||||||
|
|
||||||
config_add_boolean sae_require_mfp
|
config_add_boolean sae_require_mfp
|
||||||
|
config_add_int sae_pwe
|
||||||
|
|
||||||
config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string'
|
config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string'
|
||||||
|
|
||||||
@@ -351,6 +352,7 @@ hostapd_common_add_bss_config() {
|
|||||||
config_add_boolean multicast_to_unicast proxy_arp per_sta_vif
|
config_add_boolean multicast_to_unicast proxy_arp per_sta_vif
|
||||||
|
|
||||||
config_add_array hostapd_bss_options
|
config_add_array hostapd_bss_options
|
||||||
|
config_add_boolean default_disabled
|
||||||
|
|
||||||
config_add_boolean request_cui
|
config_add_boolean request_cui
|
||||||
config_add_array radius_auth_req_attr
|
config_add_array radius_auth_req_attr
|
||||||
@@ -364,8 +366,8 @@ hostapd_set_vlan_file() {
|
|||||||
local ifname="$1"
|
local ifname="$1"
|
||||||
local vlan="$2"
|
local vlan="$2"
|
||||||
json_get_vars name vid
|
json_get_vars name vid
|
||||||
echo "${vid} ${ifname}-${name}" >> /var/run/hostapd-${ifname}.vlan
|
echo "${vid} ${ifname}.${name}" >> /var/run/hostapd-${ifname}.vlan
|
||||||
wireless_add_vlan "${vlan}" "${ifname}-${name}"
|
wireless_add_vlan "${vlan}" "${ifname}.${name}"
|
||||||
}
|
}
|
||||||
|
|
||||||
hostapd_set_vlan() {
|
hostapd_set_vlan() {
|
||||||
@@ -525,11 +527,12 @@ hostapd_set_bss_options() {
|
|||||||
macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \
|
macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \
|
||||||
iapp_interface eapol_version dynamic_vlan ieee80211w nasid \
|
iapp_interface eapol_version dynamic_vlan ieee80211w nasid \
|
||||||
acct_server acct_secret acct_port acct_interval \
|
acct_server acct_secret acct_port acct_interval \
|
||||||
bss_load_update_period chan_util_avg_period sae_require_mfp \
|
bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \
|
||||||
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \
|
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \
|
||||||
airtime_bss_weight airtime_bss_limit airtime_sta_weight \
|
airtime_bss_weight airtime_bss_limit airtime_sta_weight \
|
||||||
multicast_to_unicast proxy_arp per_sta_vif \
|
multicast_to_unicast proxy_arp per_sta_vif \
|
||||||
eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id
|
eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \
|
||||||
|
vendor_elements
|
||||||
|
|
||||||
set_default isolate 0
|
set_default isolate 0
|
||||||
set_default maxassoc 0
|
set_default maxassoc 0
|
||||||
@@ -577,6 +580,7 @@ hostapd_set_bss_options() {
|
|||||||
append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N"
|
append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N"
|
||||||
append bss_conf "utf8_ssid=$utf8_ssid" "$N"
|
append bss_conf "utf8_ssid=$utf8_ssid" "$N"
|
||||||
append bss_conf "multi_ap=$multi_ap" "$N"
|
append bss_conf "multi_ap=$multi_ap" "$N"
|
||||||
|
[ -n "$vendor_elements" ] && append bss_conf "vendor_elements=$vendor_elements" "$N"
|
||||||
|
|
||||||
[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N"
|
[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N"
|
||||||
|
|
||||||
@@ -609,6 +613,7 @@ hostapd_set_bss_options() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N"
|
[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N"
|
||||||
|
[ -n "$sae_pwe" ] && append bss_conf "sae_pwe=$sae_pwe" "$N"
|
||||||
|
|
||||||
local vlan_possible=""
|
local vlan_possible=""
|
||||||
|
|
||||||
@@ -756,13 +761,17 @@ hostapd_set_bss_options() {
|
|||||||
append bss_conf "iapp_interface=$ifname" "$N"
|
append bss_conf "iapp_interface=$ifname" "$N"
|
||||||
}
|
}
|
||||||
|
|
||||||
json_get_vars time_advertisement time_zone wnm_sleep_mode bss_transition
|
json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition
|
||||||
set_default bss_transition 0
|
set_default bss_transition 0
|
||||||
set_default wnm_sleep_mode 0
|
set_default wnm_sleep_mode 0
|
||||||
|
set_default wnm_sleep_mode_no_keys 0
|
||||||
|
|
||||||
[ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N"
|
[ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N"
|
||||||
[ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N"
|
[ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N"
|
||||||
[ "$wnm_sleep_mode" -eq "1" ] && append bss_conf "wnm_sleep_mode=1" "$N"
|
if [ "$wnm_sleep_mode" -eq "1" ]; then
|
||||||
|
append bss_conf "wnm_sleep_mode=1" "$N"
|
||||||
|
[ "$wnm_sleep_mode_no_keys" -eq "1" ] && append bss_conf "wnm_sleep_mode_no_keys=1" "$N"
|
||||||
|
fi
|
||||||
[ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N"
|
[ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N"
|
||||||
|
|
||||||
json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report
|
json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report
|
||||||
@@ -810,6 +819,7 @@ hostapd_set_bss_options() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
[ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N"
|
||||||
append bss_conf "mobility_domain=$mobility_domain" "$N"
|
append bss_conf "mobility_domain=$mobility_domain" "$N"
|
||||||
append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N"
|
append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N"
|
||||||
append bss_conf "ft_over_ds=$ft_over_ds" "$N"
|
append bss_conf "ft_over_ds=$ft_over_ds" "$N"
|
||||||
@@ -1183,7 +1193,8 @@ wpa_supplicant_add_network() {
|
|||||||
ssid bssid key \
|
ssid bssid key \
|
||||||
basic_rate mcast_rate \
|
basic_rate mcast_rate \
|
||||||
ieee80211w ieee80211r \
|
ieee80211w ieee80211r \
|
||||||
multi_ap
|
multi_ap \
|
||||||
|
default_disabled
|
||||||
|
|
||||||
case "$auth_type" in
|
case "$auth_type" in
|
||||||
sae|owe|eap192|eap-eap192)
|
sae|owe|eap192|eap-eap192)
|
||||||
@@ -1196,6 +1207,7 @@ wpa_supplicant_add_network() {
|
|||||||
|
|
||||||
set_default ieee80211r 0
|
set_default ieee80211r 0
|
||||||
set_default multi_ap 0
|
set_default multi_ap 0
|
||||||
|
set_default default_disabled 0
|
||||||
|
|
||||||
local key_mgmt='NONE'
|
local key_mgmt='NONE'
|
||||||
local network_data=
|
local network_data=
|
||||||
@@ -1227,7 +1239,10 @@ wpa_supplicant_add_network() {
|
|||||||
scan_ssid=""
|
scan_ssid=""
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$multi_ap" = 1 -a "$_w_mode" = "sta" ] && append network_data "multi_ap_backhaul_sta=1" "$N$T"
|
[ "$_w_mode" = "sta" ] && {
|
||||||
|
[ "$multi_ap" = 1 ] && append network_data "multi_ap_backhaul_sta=1" "$N$T"
|
||||||
|
[ "$default_disabled" = 1 ] && append network_data "disabled=1" "$N$T"
|
||||||
|
}
|
||||||
|
|
||||||
case "$auth_type" in
|
case "$auth_type" in
|
||||||
none) ;;
|
none) ;;
|
||||||
|
|||||||
@@ -1021,10 +1021,8 @@ drv_mac80211_setup() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && {
|
|
||||||
uci -q -P /var/state set wireless._${phy}=phy
|
|
||||||
wireless_set_data phy="$phy"
|
wireless_set_data phy="$phy"
|
||||||
}
|
[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && uci -q -P /var/state set wireless._${phy}=phy
|
||||||
|
|
||||||
OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist)
|
OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist)
|
||||||
OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist)
|
OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist)
|
||||||
@@ -1035,6 +1033,13 @@ drv_mac80211_setup() {
|
|||||||
local found
|
local found
|
||||||
|
|
||||||
for wdev in $(list_phy_interfaces "$phy"); do
|
for wdev in $(list_phy_interfaces "$phy"); do
|
||||||
|
found=0
|
||||||
|
for cwdev in $OLDAPLIST $OLDSPLIST $OLDUMLIST; do
|
||||||
|
if [ "$wdev" = "$cwdev" ]; then
|
||||||
|
found=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
if [ "$found" = "0" ]; then
|
if [ "$found" = "0" ]; then
|
||||||
ip link set dev "$wdev" down
|
ip link set dev "$wdev" down
|
||||||
iw dev "$wdev" del
|
iw dev "$wdev" del
|
||||||
@@ -1099,13 +1104,22 @@ drv_mac80211_setup() {
|
|||||||
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
||||||
NEWAPLIST=
|
NEWAPLIST=
|
||||||
for_each_interface "ap" mac80211_prepare_vif
|
for_each_interface "ap" mac80211_prepare_vif
|
||||||
|
NEW_MD5=$(test -e "${hostapd_conf_file}" && md5sum ${hostapd_conf_file})
|
||||||
|
OLD_MD5=$(uci -q -P /var/state get wireless._${phy}.md5)
|
||||||
|
if [ "${NEWAPLIST}" != "${OLDAPLIST}" ]; then
|
||||||
mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
||||||
|
fi
|
||||||
[ -n "${NEWAPLIST}" ] && mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
[ -n "${NEWAPLIST}" ] && mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
||||||
local add_ap=0
|
local add_ap=0
|
||||||
local primary_ap=${NEWAPLIST%% *}
|
local primary_ap=${NEWAPLIST%% *}
|
||||||
[ -n "$hostapd_ctrl" ] && {
|
[ -n "$hostapd_ctrl" ] && {
|
||||||
local no_reload=1
|
local no_reload=1
|
||||||
if [ -n "$(ubus list | grep hostapd.$primary_ap)" ]; then
|
if [ -n "$(ubus list | grep hostapd.$primary_ap)" ]; then
|
||||||
|
no_reload=0
|
||||||
|
[ "${NEW_MD5}" = "${OLD_MD5}" ] || {
|
||||||
|
ubus call hostapd.$primary_ap reload
|
||||||
|
no_reload=$?
|
||||||
|
if [ "$no_reload" != "0" ]; then
|
||||||
mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
mac80211_vap_cleanup hostapd "${OLDAPLIST}"
|
||||||
mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)"
|
mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)"
|
||||||
mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)"
|
mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)"
|
||||||
@@ -1113,10 +1127,11 @@ drv_mac80211_setup() {
|
|||||||
mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap
|
||||||
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
fi
|
||||||
if [ "$no_reload" != "0" ]; then
|
if [ "$no_reload" != "0" ]; then
|
||||||
add_ap=1
|
add_ap=1
|
||||||
ubus wait_for hostapd
|
ubus wait_for hostapd
|
||||||
ip link set $primary_ap down
|
|
||||||
local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")"
|
local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")"
|
||||||
ret="$?"
|
ret="$?"
|
||||||
[ "$ret" != 0 -o -z "$hostapd_res" ] && {
|
[ "$ret" != 0 -o -z "$hostapd_res" ] && {
|
||||||
@@ -1175,6 +1190,10 @@ drv_mac80211_teardown() {
|
|||||||
json_select data
|
json_select data
|
||||||
json_get_vars phy
|
json_get_vars phy
|
||||||
json_select ..
|
json_select ..
|
||||||
|
[ -n "$phy" ] || {
|
||||||
|
echo "Bug: PHY is undefined for device '$1'"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
mac80211_interface_cleanup "$phy"
|
mac80211_interface_cleanup "$phy"
|
||||||
uci -q -P /var/state revert wireless._${phy}
|
uci -q -P /var/state revert wireless._${phy}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
From 7890393e2bb05b5d9e9cf351642b99585b068a13 Mon Sep 17 00:00:00 2001
|
From a524aed3cf42831f98fdd88ef31e3eb491372d0e Mon Sep 17 00:00:00 2001
|
||||||
From: John Crispin <john@phrozen.org>
|
From: John Crispin <john@phrozen.org>
|
||||||
Date: Sat, 18 Jul 2020 08:53:44 +0200
|
Date: Sat, 18 Jul 2020 08:53:44 +0200
|
||||||
Subject: [PATCH 01/14] ipq807x: add the Qualcomm AX target support
|
Subject: [PATCH 21/36] ipq807x: add the Qualcomm AX target support
|
||||||
|
|
||||||
Signed-off-by: John Crispin <john@phrozen.org>
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
---
|
---
|
||||||
@@ -12,7 +12,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
.../etc/hotplug.d/firmware/11-ath10k-caldata | 5 +
|
.../etc/hotplug.d/firmware/11-ath10k-caldata | 5 +
|
||||||
target/linux/ipq807x/109-logspam.patch | 24 +
|
target/linux/ipq807x/109-logspam.patch | 24 +
|
||||||
target/linux/ipq807x/Makefile | 22 +
|
target/linux/ipq807x/Makefile | 22 +
|
||||||
.../ipq807x/base-files/etc/board.d/01_leds | 35 +
|
.../ipq807x/base-files/etc/board.d/01_leds | 36 +
|
||||||
.../ipq807x/base-files/etc/board.d/02_network | 77 +
|
.../ipq807x/base-files/etc/board.d/02_network | 77 +
|
||||||
.../etc/hotplug.d/firmware/10-ath11k-caldata | 97 ++
|
.../etc/hotplug.d/firmware/10-ath11k-caldata | 97 ++
|
||||||
.../ipq807x/base-files/etc/init.d/aq_phy | 15 +
|
.../ipq807x/base-files/etc/init.d/aq_phy | 15 +
|
||||||
@@ -53,7 +53,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||||||
.../linux/ipq807x/patches/108-log-spam.patch | 37 +
|
.../linux/ipq807x/patches/108-log-spam.patch | 37 +
|
||||||
target/linux/ipq807x/patches/109-tplink.patch | 1518 +++++++++++++++++
|
target/linux/ipq807x/patches/109-tplink.patch | 1518 +++++++++++++++++
|
||||||
.../ipq807x/patches/110-add-esmt-nand.patch | 37 +
|
.../ipq807x/patches/110-add-esmt-nand.patch | 37 +
|
||||||
48 files changed, 9338 insertions(+), 3 deletions(-)
|
48 files changed, 9339 insertions(+), 3 deletions(-)
|
||||||
create mode 100644 package/boot/uboot-envtools/files/ipq807x
|
create mode 100644 package/boot/uboot-envtools/files/ipq807x
|
||||||
create mode 100644 target/linux/ipq807x/109-logspam.patch
|
create mode 100644 target/linux/ipq807x/109-logspam.patch
|
||||||
create mode 100644 target/linux/ipq807x/Makefile
|
create mode 100644 target/linux/ipq807x/Makefile
|
||||||
@@ -186,6 +186,21 @@ index 0000000000..6c429f1852
|
|||||||
+config_foreach ubootenv_add_app_config ubootenv
|
+config_foreach ubootenv_add_app_config ubootenv
|
||||||
+
|
+
|
||||||
+exit 0
|
+exit 0
|
||||||
|
diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
|
||||||
|
index 7d035a299b..986c74dc4d 100644
|
||||||
|
--- a/package/network/services/hostapd/files/hostapd.sh
|
||||||
|
+++ b/package/network/services/hostapd/files/hostapd.sh
|
||||||
|
@@ -365,8 +365,8 @@ hostapd_set_vlan_file() {
|
||||||
|
local ifname="$1"
|
||||||
|
local vlan="$2"
|
||||||
|
json_get_vars name vid
|
||||||
|
- echo "${vid} ${ifname}-${name}" >> /var/run/hostapd-${ifname}.vlan
|
||||||
|
- wireless_add_vlan "${vlan}" "${ifname}-${name}"
|
||||||
|
+ echo "${vid} ${ifname}.${name}" >> /var/run/hostapd-${ifname}.vlan
|
||||||
|
+ wireless_add_vlan "${vlan}" "${ifname}.${name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
hostapd_set_vlan() {
|
||||||
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||||
index c4d9dd78e3..6670d310db 100644
|
index c4d9dd78e3..6670d310db 100644
|
||||||
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
||||||
@@ -262,10 +277,10 @@ index 0000000000..66031ace35
|
|||||||
+$(eval $(call BuildTarget))
|
+$(eval $(call BuildTarget))
|
||||||
diff --git a/target/linux/ipq807x/base-files/etc/board.d/01_leds b/target/linux/ipq807x/base-files/etc/board.d/01_leds
|
diff --git a/target/linux/ipq807x/base-files/etc/board.d/01_leds b/target/linux/ipq807x/base-files/etc/board.d/01_leds
|
||||||
new file mode 100755
|
new file mode 100755
|
||||||
index 0000000000..60a3ccdc52
|
index 0000000000..35b4d9b529
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/target/linux/ipq807x/base-files/etc/board.d/01_leds
|
+++ b/target/linux/ipq807x/base-files/etc/board.d/01_leds
|
||||||
@@ -0,0 +1,35 @@
|
@@ -0,0 +1,36 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+
|
+
|
||||||
+. /lib/functions/uci-defaults.sh
|
+. /lib/functions/uci-defaults.sh
|
||||||
@@ -278,13 +293,13 @@ index 0000000000..60a3ccdc52
|
|||||||
+sercomm,wallaby|\
|
+sercomm,wallaby|\
|
||||||
+cig,wf188n|\
|
+cig,wf188n|\
|
||||||
+cig,wf194c)
|
+cig,wf194c)
|
||||||
+ ucidef_set_led_netdev "wan" "WAN" "green:wan" "br-wan" "tx rx link"
|
+ ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0" "tx rx link"
|
||||||
+ ucidef_set_led_netdev "lan" "LAN" "green:lan" "br-lan" "tx rx link"
|
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx"
|
||||||
|
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx"
|
||||||
+ ;;
|
+ ;;
|
||||||
+esac
|
+esac
|
||||||
+
|
+
|
||||||
+case "$board" in
|
+case "$board" in
|
||||||
+cig,wf188n|\
|
|
||||||
+edgecore,eap101)
|
+edgecore,eap101)
|
||||||
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx"
|
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx"
|
||||||
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx"
|
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx"
|
||||||
@@ -293,6 +308,7 @@ index 0000000000..60a3ccdc52
|
|||||||
+ ucidef_set_led_netdev "poe" "poe" "green:wan" "eth0"
|
+ ucidef_set_led_netdev "poe" "poe" "green:wan" "eth0"
|
||||||
+ ;;
|
+ ;;
|
||||||
+edgecore,eap102)
|
+edgecore,eap102)
|
||||||
|
+ ucidef_set_led_netdev "poe" "poe" "green:wan" "eth0"
|
||||||
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx"
|
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx"
|
||||||
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx"
|
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx"
|
||||||
+ ;;
|
+ ;;
|
||||||
@@ -6306,7 +6322,7 @@ index 0000000000..ba4a5ef3ca
|
|||||||
+};
|
+};
|
||||||
diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts
|
diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts
|
||||||
new file mode 100755
|
new file mode 100755
|
||||||
index 0000000000..fdb0d03a30
|
index 0000000000..d04cb1020c
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts
|
+++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts
|
||||||
@@ -0,0 +1,918 @@
|
@@ -0,0 +1,918 @@
|
||||||
@@ -6982,10 +6998,10 @@ index 0000000000..fdb0d03a30
|
|||||||
+ pinctrl-0 = <&led_pins>;
|
+ pinctrl-0 = <&led_pins>;
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+
|
+
|
||||||
+ led_power: led_pwr {
|
+ led_pwr {
|
||||||
+ label = "green:power";
|
+ label = "green:wan";
|
||||||
+ gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>;
|
+ gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>;
|
||||||
+ default-state = "on";
|
+ default-state = "off";
|
||||||
+ linux,default-trigger = "led_pwr";
|
+ linux,default-trigger = "led_pwr";
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
@@ -7001,10 +7017,10 @@ index 0000000000..fdb0d03a30
|
|||||||
+ default-state = "off";
|
+ default-state = "off";
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ led_bt {
|
+ led_power: led_bt {
|
||||||
+ gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>;
|
+ gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>;
|
||||||
+ label = "green:bt";
|
+ label = "green:power";
|
||||||
+ default-state = "off";
|
+ default-state = "on";
|
||||||
+ linux,default-trigger = "led_bt";
|
+ linux,default-trigger = "led_bt";
|
||||||
+ };
|
+ };
|
||||||
+ };
|
+ };
|
||||||
@@ -8752,7 +8768,7 @@ index 0000000000..5744a2a5bf
|
|||||||
+ struct comp_opts {
|
+ struct comp_opts {
|
||||||
diff --git a/target/linux/ipq807x/patches/102-cig-wf188.patch b/target/linux/ipq807x/patches/102-cig-wf188.patch
|
diff --git a/target/linux/ipq807x/patches/102-cig-wf188.patch b/target/linux/ipq807x/patches/102-cig-wf188.patch
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..225ea45d08
|
index 0000000000..a9d3015b79
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/target/linux/ipq807x/patches/102-cig-wf188.patch
|
+++ b/target/linux/ipq807x/patches/102-cig-wf188.patch
|
||||||
@@ -0,0 +1,869 @@
|
@@ -0,0 +1,869 @@
|
||||||
@@ -9085,25 +9101,25 @@ index 0000000000..225ea45d08
|
|||||||
++ pinctrl-names = "default";
|
++ pinctrl-names = "default";
|
||||||
++
|
++
|
||||||
++ led@25 {
|
++ led@25 {
|
||||||
++ label = "led_5g";
|
++ label = "green:wifi5";
|
||||||
++ gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:5g";
|
++ linux,default-trigger = "wf188:green:5g";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led@24 {
|
++ led@24 {
|
||||||
++ label = "led_2g";
|
++ label = "green:wifi2";
|
||||||
++ gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:2g";
|
++ linux,default-trigger = "wf188:green:2g";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led@18 {
|
++ led@18 {
|
||||||
++ label = "led_eth";
|
++ label = "green:wan";
|
||||||
++ gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:eth";
|
++ linux,default-trigger = "wf188:green:eth";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led_power: led@16 {
|
++ led_power: led@16 {
|
||||||
++ label = "led_pwr";
|
++ label = "green:power";
|
||||||
++ gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:power";
|
++ linux,default-trigger = "wf188:green:power";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
@@ -9513,28 +9529,28 @@ index 0000000000..225ea45d08
|
|||||||
++ pinctrl-names = "default";
|
++ pinctrl-names = "default";
|
||||||
++
|
++
|
||||||
++ led@25 {
|
++ led@25 {
|
||||||
++ label = "led_5g";
|
++ label = "green:wifi5";
|
||||||
++ gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:5g";
|
++ linux,default-trigger = "wf188:green:5g";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led@24 {
|
++ led@24 {
|
||||||
++ label = "led_2g";
|
++ label = "green:wifi2";
|
||||||
++ gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:2g";
|
++ linux,default-trigger = "wf188:green:2g";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led@18 {
|
++ led@18 {
|
||||||
++ label = "led_eth";
|
++ label = "green:wan";
|
||||||
++ gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:eth";
|
++ linux,default-trigger = "wf188:green:eth";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led_power: led@16 {
|
++ led_power: led@16 {
|
||||||
++ label = "led_pwr";
|
++ label = "green:power";
|
||||||
++ gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
|
++ gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:power";
|
++ linux,default-trigger = "wf188:green:power";
|
||||||
++ default-state = "off";
|
++ default-state = "on";
|
||||||
++ };
|
++ };
|
||||||
++ };
|
++ };
|
||||||
++
|
++
|
||||||
@@ -11288,7 +11304,7 @@ index 0000000000..f91601ec59
|
|||||||
+ /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
+ /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||||
diff --git a/target/linux/ipq807x/patches/106-eap101.patch b/target/linux/ipq807x/patches/106-eap101.patch
|
diff --git a/target/linux/ipq807x/patches/106-eap101.patch b/target/linux/ipq807x/patches/106-eap101.patch
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..228dadb611
|
index 0000000000..188870b8dc
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/target/linux/ipq807x/patches/106-eap101.patch
|
+++ b/target/linux/ipq807x/patches/106-eap101.patch
|
||||||
@@ -0,0 +1,993 @@
|
@@ -0,0 +1,993 @@
|
||||||
@@ -12184,13 +12200,13 @@ index 0000000000..228dadb611
|
|||||||
++
|
++
|
||||||
++ led@25 {
|
++ led@25 {
|
||||||
++ label = "green:wifi5";
|
++ label = "green:wifi5";
|
||||||
++ gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
|
++ gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:5g";
|
++ linux,default-trigger = "wf188:green:5g";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
++ led@24 {
|
++ led@24 {
|
||||||
++ label = "green:wifi2";
|
++ label = "green:wifi2";
|
||||||
++ gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
|
++ gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
|
||||||
++ linux,default-trigger = "wf188:green:2g";
|
++ linux,default-trigger = "wf188:green:2g";
|
||||||
++ default-state = "off";
|
++ default-state = "off";
|
||||||
++ };
|
++ };
|
||||||
|
|||||||
@@ -1,27 +1,28 @@
|
|||||||
From 43f1072a42dd19a0718c44c58daf3f9e5a3c9421 Mon Sep 17 00:00:00 2001
|
From d459f53ff9608c47fbf0b634fa4380bce1099d49 Mon Sep 17 00:00:00 2001
|
||||||
From: John Crispin <john@phrozen.org>
|
From: John Crispin <john@phrozen.org>
|
||||||
Date: Mon, 19 Apr 2021 13:49:20 +0200
|
Date: Mon, 19 Apr 2021 13:49:20 +0200
|
||||||
Subject: [PATCH] base-files: add a turnoff command to the led script
|
Subject: [PATCH 31/36] base-files: add a turnoff command to the led script
|
||||||
|
|
||||||
Signed-off-by: John Crispin <john@phrozen.org>
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
---
|
---
|
||||||
package/base-files/files/etc/init.d/led | 15 +++++++++++++++
|
package/base-files/files/etc/init.d/led | 23 +++++++++++++++++++++++
|
||||||
1 file changed, 15 insertions(+)
|
1 file changed, 23 insertions(+)
|
||||||
|
|
||||||
diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led
|
diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led
|
||||||
index 8d97515d52..9f7930feed 100755
|
index 8d97515d52..3221c8c44c 100755
|
||||||
--- a/package/base-files/files/etc/init.d/led
|
--- a/package/base-files/files/etc/init.d/led
|
||||||
+++ b/package/base-files/files/etc/init.d/led
|
+++ b/package/base-files/files/etc/init.d/led
|
||||||
@@ -3,6 +3,8 @@
|
@@ -3,6 +3,9 @@
|
||||||
|
|
||||||
START=96
|
START=96
|
||||||
|
|
||||||
+extra_command "turnoff" "Turn all leds off"
|
+extra_command "turnoff" "Turn all leds off"
|
||||||
|
+extra_command "blink" "Blink all leds"
|
||||||
+
|
+
|
||||||
load_led() {
|
load_led() {
|
||||||
local name
|
local name
|
||||||
local sysfs
|
local sysfs
|
||||||
@@ -122,7 +124,18 @@ load_led() {
|
@@ -122,7 +125,25 @@ load_led() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,6 +32,13 @@ index 8d97515d52..9f7930feed 100755
|
|||||||
+ echo 0 > /sys/class/leds/$led/brightness
|
+ echo 0 > /sys/class/leds/$led/brightness
|
||||||
+ done
|
+ done
|
||||||
+}
|
+}
|
||||||
|
+
|
||||||
|
+blink() {
|
||||||
|
+ for led in `ls /sys/class/leds/`; do
|
||||||
|
+ echo 0 > /sys/class/leds/$led/brightness
|
||||||
|
+ echo timer > /sys/class/leds/$led/trigger
|
||||||
|
+ done
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
start() {
|
start() {
|
||||||
+ [ "$(uci get system.@system[-1].leds_off)" -eq 1 ] && {
|
+ [ "$(uci get system.@system[-1].leds_off)" -eq 1 ] && {
|
||||||
@@ -40,7 +48,7 @@ index 8d97515d52..9f7930feed 100755
|
|||||||
[ -e /sys/class/leds/ ] && {
|
[ -e /sys/class/leds/ ] && {
|
||||||
[ -s /var/run/led.state ] && {
|
[ -s /var/run/led.state ] && {
|
||||||
local led trigger brightness
|
local led trigger brightness
|
||||||
@@ -138,5 +151,7 @@ start() {
|
@@ -138,5 +159,7 @@ start() {
|
||||||
|
|
||||||
config_load system
|
config_load system
|
||||||
config_foreach load_led led
|
config_foreach load_led led
|
||||||
|
|||||||
Reference in New Issue
Block a user