luci-mod-admin-full: new hostapd functionality for 80211w/r detection

Use the new hostapd functionality (in LEDE) to detect 802.11r and 802.11w
more properly. Leave the old logic in place for Openwrt.

Adjust 802.11w default value from "0" to "" in order to avoid unnecessary
"option ieee80211w 0" lines in /etc/config/wireless

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
This commit is contained in:
Hannu Nyman 2017-02-28 14:16:19 +02:00
parent 283c69ab5e
commit b0943391d8

View file

@ -901,8 +901,8 @@ end
if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
-- Probe EAP support as a proxy for determining if 802.11r support is present -- Probe 802.11r support (and EAP support as a proxy for Openwrt)
local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0) local has_80211r = (os.execute("hostapd -v11r 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
ieee80211r = s:taboption("encryption", Flag, "ieee80211r", ieee80211r = s:taboption("encryption", Flag, "ieee80211r",
translate("802.11r Fast Transition"), translate("802.11r Fast Transition"),
@ -912,7 +912,7 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
ieee80211r:depends({mode="ap", encryption="wpa2"}) ieee80211r:depends({mode="ap", encryption="wpa2"})
ieee80211r:depends({mode="ap-wds", encryption="wpa"}) ieee80211r:depends({mode="ap-wds", encryption="wpa"})
ieee80211r:depends({mode="ap-wds", encryption="wpa2"}) ieee80211r:depends({mode="ap-wds", encryption="wpa2"})
if has_ap_eap then if has_80211r then
ieee80211r:depends({mode="ap", encryption="psk"}) ieee80211r:depends({mode="ap", encryption="psk"})
ieee80211r:depends({mode="ap", encryption="psk2"}) ieee80211r:depends({mode="ap", encryption="psk2"})
ieee80211r:depends({mode="ap", encryption="psk-mixed"}) ieee80211r:depends({mode="ap", encryption="psk-mixed"})
@ -1125,16 +1125,16 @@ end
-- ieee802.11w options -- ieee802.11w options
if hwtype == "mac80211" then if hwtype == "mac80211" then
local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0) local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
if has_ap_eap then if has_80211w then
ieee80211w = s:taboption("encryption", ListValue, "ieee80211w", ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
translate("802.11w Management Frame Protection"), translate("802.11w Management Frame Protection"),
translate("Requires the 'full' version of wpad/hostapd " .. translate("Requires the 'full' version of wpad/hostapd " ..
"and support from the wifi driver <br />(as of Feb 2017: " .. "and support from the wifi driver <br />(as of Feb 2017: " ..
"ath9k and ath10k, in LEDE also mwlwifi and mt76)")) "ath9k and ath10k, in LEDE also mwlwifi and mt76)"))
ieee80211w.default = "0" ieee80211w.default = ""
ieee80211w.rmempty = true ieee80211w.rmempty = true
ieee80211w:value("0", translate("Disabled (default)")) ieee80211w:value("", translate("Disabled (default)"))
ieee80211w:value("1", translate("Optional")) ieee80211w:value("1", translate("Optional"))
ieee80211w:value("2", translate("Required")) ieee80211w:value("2", translate("Required"))
ieee80211w:depends({mode="ap", encryption="wpa2"}) ieee80211w:depends({mode="ap", encryption="wpa2"})