Cosmetic changes to the terminology in the UI:
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_network / wifi.lua
index 334d9f2..d57c91f 100644 (file)
@@ -14,6 +14,7 @@ $Id$
 
 local wa = require "luci.tools.webadmin"
 local nw = require "luci.model.network"
+local ut = require "luci.util"
 local fs = require "nixio.fs"
 
 arg[1] = arg[1] or ""
@@ -113,14 +114,18 @@ local function arplist(opt)
                arp[e["HW address"]:upper()] = { e["IP address"] }
        end
 
-       for e in io.lines("/etc/ethers") do
-               mac, ip = e:match("^([a-f0-9]%S+) (%S+)")
-               if mac and ip then arp[mac:upper()] = { ip } end
+       if fs.access("/etc/ethers") then
+               for e in io.lines("/etc/ethers") do
+                       mac, ip = e:match("^([a-f0-9]%S+) (%S+)")
+                       if mac and ip then arp[mac:upper()] = { ip } end
+               end
        end
 
-       for e in io.lines("/var/dhcp.leases") do
-               mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)")
-               if mac and ip then arp[mac:upper()] = { ip, name ~= "*" and name } end
+       if fs.access("/var/dhcp.leases") then
+               for e in io.lines("/var/dhcp.leases") do
+                       mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)")
+                       if mac and ip then arp[mac:upper()] = { ip, name ~= "*" and name } end
+               end
        end
 
        for mac, e in luci.util.kspairs(arp) do
@@ -197,20 +202,19 @@ end
 ------------------- MAC80211 Device ------------------
 
 if hwtype == "mac80211" then
-       tp = s:taboption("general",
-               (#tx_power_list > 0) and ListValue or Value,
-               "txpower", translate("Transmit Power"), "dBm")
-
-       tp.rmempty = true
-       tp.default = tx_power_cur
-
-       function tp.cfgvalue(...)
-               return txpower_current(Value.cfgvalue(...), tx_power_list)
-       end
+       if #tx_power_list > 1 then
+               tp = s:taboption("general", ListValue,
+                       "txpower", translate("Transmit Power"), "dBm")
+               tp.rmempty = true
+               tp.default = tx_power_cur
+               function tp.cfgvalue(...)
+                       return txpower_current(Value.cfgvalue(...), tx_power_list)
+               end
 
-       for _, p in ipairs(tx_power_list) do
-               tp:value(p.driver_dbm, "%i dBm (%i mW)"
-                       %{ p.display_dbm, p.display_mw })
+               for _, p in ipairs(tx_power_list) do
+                       tp:value(p.driver_dbm, "%i dBm (%i mW)"
+                               %{ p.display_dbm, p.display_mw })
+               end
        end
 
        mode = s:taboption("advanced", ListValue, "hwmode", translate("Mode"))
@@ -412,7 +416,8 @@ network = s:taboption("general", Value, "network", translate("Network"),
 
 network.rmempty = true
 network.template = "cbi/network_netlist"
-network.widget = "radio"
+network.widget = "checkbox"
+network.novirtual = true
 
 function network.write(self, section, value)
        local i = nw:get_interface(section)
@@ -427,10 +432,18 @@ function network.write(self, section, value)
                                if n then n:del_interface(i) end
                        end
                else
-                       local n = nw:get_network(value)
-                       if n then
-                               n:set("type", "bridge")
-                               n:add_interface(i)
+                       local v
+                       for _, v in ipairs(i:get_networks()) do
+                               v:del_interface(i)
+                       end
+                       for v in ut.imatch(value) do
+                               local n = nw:get_network(v)
+                               if n then
+                                       if not n:is_empty() then
+                                               n:set("type", "bridge")
+                                       end
+                                       n:add_interface(i)
+                               end
                        end
                end
        end
@@ -715,8 +728,8 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
        local supplicant = fs.access("/usr/sbin/wpa_supplicant")
        local hostapd = fs.access("/usr/sbin/hostapd")
 
-       -- Probe EAP support                                                                                                
-       local has_ap_eap  = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)                                                        
+       -- Probe EAP support
+       local has_ap_eap  = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)
        local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0)
 
        if hostapd and supplicant then