modules/admin-full: extend wifi model to allow assigning multiple networks
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 26 Jun 2012 21:49:18 +0000 (21:49 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 26 Jun 2012 21:49:18 +0000 (21:49 +0000)
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua

index b407408a3f4e97fbde48436327bd2874743b6d2b..d57c91f205e02ce081a66f7f02d5baabec376694 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 ""
@@ -415,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)
@@ -430,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
@@ -718,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