diff options
| author | Felix Fietkau | 2025-08-25 18:31:02 +0000 |
|---|---|---|
| committer | Felix Fietkau | 2025-08-26 09:54:52 +0000 |
| commit | 76eb96c875fce2f8b83f3e2a7a675aade308c5c9 (patch) | |
| tree | e2f6d63b468d78ca8694bd37b891bdd3b4ea3265 | |
| parent | 6bf869db0fe181b28ff71f3145715adc47de1a6b (diff) | |
| download | openwrt-76eb96c875fce2f8b83f3e2a7a675aade308c5c9.tar.gz | |
wifi-scripts: fix reload handling with random macaddr
Allow initially generated MAC address to be preserved across reload
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 5bdb7a59906ee71d0178f78c4b3ce4c4ff4bb4e0)
| -rwxr-xr-x | package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh | 3 | ||||
| -rw-r--r-- | package/network/services/hostapd/files/hostapd.uc | 6 |
2 files changed, 8 insertions, 1 deletions
diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh index 6c3d3f38b4..eea18e830e 100755 --- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh +++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh @@ -563,6 +563,7 @@ mac80211_hostapd_setup_bss() { $hostapd_cfg bssid=$macaddr ${default_macaddr:+#default_macaddr} +${random_macaddr:+#random_macaddr} ${dtim_period:+dtim_period=$dtim_period} ${max_listen_int:+max_listen_interval=$max_listen_int} EOF @@ -691,12 +692,14 @@ mac80211_prepare_vif() { json_add_string _ifname "$ifname" default_macaddr= + random_macaddr= if [ -z "$macaddr" ]; then macaddr="$(mac80211_generate_mac $phy)" macidx="$(($macidx + 1))" default_macaddr=1 elif [ "$macaddr" = 'random' ]; then macaddr="$(macaddr_random)" + random_macaddr=1 fi json_add_string _macaddr "$macaddr" json_add_string _default_macaddr "$default_macaddr" diff --git a/package/network/services/hostapd/files/hostapd.uc b/package/network/services/hostapd/files/hostapd.uc index f4f479c0f6..5c172de5df 100644 --- a/package/network/services/hostapd/files/hostapd.uc +++ b/package/network/services/hostapd/files/hostapd.uc @@ -485,7 +485,9 @@ function iface_reload_config(name, phydev, config, old_config) // try to preserve MAC address of this BSS by reassigning another // BSS if necessary - if (cur_config.default_macaddr && + if ((cur_config.default_macaddr || cur_config.random_macaddr) && + cur_config.random_macaddr == prev_config.random_macaddr && + cur_config.default_macaddr == prev_config.default_macaddr && !macaddr_list[prev_config.bssid]) { macaddr_list[prev_config.bssid] = i; cur_config.bssid = prev_config.bssid; @@ -761,6 +763,8 @@ function iface_load_config(phy, radio, filename) while ((line = rtrim(f.read("line"), "\n")) != null) { if (line == "#default_macaddr") bss.default_macaddr = true; + if (line == "#random_macaddr") + bss.random_macaddr = true; let val = split(line, "=", 2); if (!val[0]) |