From 7590cd25f4bdc1c54088dadab973037c96f3b4d3 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 21 May 2009 21:33:24 +0000 Subject: [PATCH] - Add support for hostap driver - Retrieve channels from all available wireless interfaces - Add channel "auto" to channel list Thanks Vasilis Tsiligiannis --- libs/sys/luasrc/sys.lua | 7 +-- .../root/lib/uci/schema/default/wireless | 14 +++--- .../luasrc/model/cbi/admin_network/wifi.lua | 50 ++++++++++++++++++++-- 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index ad80ae5ba..9910ed37c 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -691,13 +691,14 @@ function wifi.channels(iface) local fd = io.popen(cmd) if fd then local ln, c, f - repeat - ln = fd:read("*l") or "" + while true do + ln = fd:read("*l") + if not ln then break end c, f = ln:match("Channel (%d+) : (%d+%.%d+) GHz") if c and f then cns[tonumber(c)] = tonumber(f) end - until not ( #ln > 0 ) + end fd:close() end diff --git a/modules/admin-core/root/lib/uci/schema/default/wireless b/modules/admin-core/root/lib/uci/schema/default/wireless index bd466d1f2..248b50ec9 100644 --- a/modules/admin-core/root/lib/uci/schema/default/wireless +++ b/modules/admin-core/root/lib/uci/schema/default/wireless @@ -94,6 +94,7 @@ config variable option datatype uint list depends type=atheros list depends type=broadcom + list depends type=prism2 config variable option name 'rxantenna' @@ -102,6 +103,7 @@ config variable option datatype uint list depends type=atheros list depends type=broadcom + list depends type=prism2 config variable option name 'distance' @@ -254,13 +256,13 @@ config variable config variable option name 'frag' option section 'wireless.wifi-iface' - option title 'Fragmentation Threshold (mac80211, atheros)' + option title 'Fragmentation Threshold (mac80211, atheros, prism2)' option datatype uint config variable option name 'rts' option section 'wireless.wifi-iface' - option title 'RTS/CTS Threshold (mac80211, atheros)' + option title 'RTS/CTS Threshold (mac80211, atheros, prism2)' option datatype uint config variable @@ -287,7 +289,7 @@ config variable config variable option name 'hidden' option section 'wireless.wifi-iface' - option title 'Hide ESSID (atheros, broadcom)' + option title 'Hide ESSID (atheros, broadcom, prism2)' option datatype boolean list depends 'mode=ap' list depends 'mode=adhoc' @@ -327,7 +329,7 @@ config variable config variable option name 'macpolicy' option section 'wireless.wifi-iface' - option title 'MAC-Address Filter (atheros)' + option title 'MAC-Address Filter (atheros, prism2)' option type enum config enum @@ -343,7 +345,7 @@ config enum config variable option name 'maclist' option section 'wireless.wifi-iface' - option title 'MAC-List (atheros)' + option title 'MAC-List (atheros, prism2)' list depends 'macpolicy=allow' list depends 'macpolicy=deny' option type lazylist @@ -352,7 +354,7 @@ config variable config variable option name 'rate' option section 'wireless.wifi-iface' - option title 'Transmission Rate (atheros)' + option title 'Transmission Rate (atheros, prism2)' config variable option name 'mcast_rate' diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua index 43bff5d52..2ec94dc02 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -39,22 +39,24 @@ local hwtype = m:get(arg[1], "type") local nsantenna = m:get(arg[1], "antenna") ch = s:option(Value, "channel", translate("a_w_channel")) +ch:value("auto", translate("wifi_auto")) for c, f in luci.util.kspairs(luci.sys.wifi.channels()) do ch:value(c, "%i (%.3f GHz)" %{ c, f }) end -s:option(Value, "txpower", translate("a_w_txpwr"), "dBm").rmempty = true ------------------- MAC80211 Device ------------------ if hwtype == "mac80211" then - + s:option(Value, "txpower", translate("a_w_txpwr"), "dBm").rmempty = true end ------------------- Madwifi Device ------------------ if hwtype == "atheros" then + s:option(Value, "txpower", translate("a_w_txpwr"), "dBm").rmempty = true + mode = s:option(ListValue, "mode", translate("mode")) mode:value("", translate("wifi_auto")) mode:value("11b", "802.11b") @@ -91,6 +93,8 @@ end ------------------- Broadcom Device ------------------ if hwtype == "broadcom" then + s:option(Value, "txpower", translate("a_w_txpwr"), "dBm").rmempty = true + mp = s:option(ListValue, "macfilter", translate("wifi_macpolicy")) mp.optional = true mp:value("") @@ -113,6 +117,16 @@ if hwtype == "broadcom" then end +--------------------- HostAP Device --------------------- + +if hwtype == "prism2" then + s:option(Value, "txpower", translate("a_w_txpwr"), "att units").rmempty = true + + s:option(Value, "txantenna", translate("wifi_txantenna")).optional = true + s:option(Value, "rxantenna", translate("wifi_rxantenna")).optional = true +end + + ----------------------- Interface ----------------------- s = m:section(TypedSection, "wifi-iface", translate("interfaces")) @@ -262,6 +276,34 @@ if hwtype == "broadcom" then end +----------------------- HostAP Interface --------------------- + +if hwtype == "prism2" then + mode:value("wds", translate("a_w_wds")) + mode:value("monitor", translate("a_w_monitor")) + + hidden = s:option(Flag, "hidden", translate("wifi_hidden")) + hidden:depends({mode="ap"}) + hidden:depends({mode="adhoc"}) + hidden:depends({mode="wds"}) + hidden.optional = true + + bssid:depends({mode="sta"}) + + mp = s:option(ListValue, "macpolicy", translate("wifi_macpolicy")) + mp.optional = true + mp:value("") + mp:value("deny", translate("wifi_whitelist")) + mp:value("allow", translate("wifi_blacklist")) + ml = s:option(DynamicList, "maclist", translate("wifi_maclist")) + ml:depends({macpolicy="allow"}) + ml:depends({macpolicy="deny"}) + + s:option(Value, "rate", translate("wifi_rate")).optional = true + s:option(Value, "frag", translate("wifi_frag")).optional = true + s:option(Value, "rts", translate("wifi_rts")).optional = true +end + ------------------- WiFI-Encryption ------------------- @@ -277,7 +319,7 @@ encr:depends({mode="mesh"}) encr:value("none", "No Encryption") encr:value("wep", "WEP") -if hwtype == "atheros" or hwtype == "mac80211" then +if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then local supplicant = luci.fs.mtime("/usr/sbin/wpa_supplicant") local hostapd = luci.fs.mtime("/usr/sbin/hostapd") @@ -332,7 +374,7 @@ key:depends("encryption", "psk2") key:depends({mode="ap", encryption="wpa2"}) key.rmempty = true -if hwtype == "atheros" or hwtype == "mac80211" then +if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then nasid = s:option(Value, "nasid", translate("a_w_nasid")) nasid:depends({mode="ap", encryption="wpa"}) nasid:depends({mode="ap", encryption="wpa2"}) -- 2.11.0