diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-10-26 21:54:51 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-10-26 21:54:51 +0000 |
commit | 017d24c7241ba2393498b3ceb637cb0883c9e114 (patch) | |
tree | b2e6d4fcaddc5963ffc134ce85b3f80064c67c16 /modules/admin-full/luasrc/model/cbi | |
parent | d60d892385735ef274278cf63d363917eb3e6361 (diff) |
modules/admin-full: fix wifi join when "wwan" (or other iface) already exists but only contains the network we intend to replace anyway, also save firewall settings after wifi join
Diffstat (limited to 'modules/admin-full/luasrc/model/cbi')
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua | 1 | ||||
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_network/wifi_add.lua | 69 |
2 files changed, 36 insertions, 34 deletions
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 57697f573c..f5d6cf476b 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -25,6 +25,7 @@ m = Map("wireless", "", "like encryption or operation mode are grouped in the <em>Interface Configuration</em>.")) m:chain("network") +m:chain("firewall") local ifsection diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/wifi_add.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wifi_add.lua index 9c848f250c..ff63c26260 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/wifi_add.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi_add.lua @@ -104,9 +104,6 @@ end function newnet.parse(self, section) local net, zone - local value = self:formvalue(section) - net = nw:add_network(value, { proto = "dhcp" }) - if has_firewall then local zval = fwzone:formvalue(section) zone = fw:get_zone(zval) @@ -119,42 +116,46 @@ function newnet.parse(self, section) end end - if not net then - self.error = { [section] = "missing" } - else - local wdev = nw:get_wifidev(m.hidden.device) + local wdev = nw:get_wifidev(m.hidden.device) - wdev:set("disabled", false) - wdev:set("channel", m.hidden.channel) + wdev:set("disabled", false) + wdev:set("channel", m.hidden.channel) - if replace:formvalue(section) then - local n - for _, n in ipairs(wdev:get_wifinets()) do - wdev:del_wifinet(n) - end + if replace:formvalue(section) then + local n + for _, n in ipairs(wdev:get_wifinets()) do + wdev:del_wifinet(n) end + end - local wconf = { - device = m.hidden.device, - ssid = m.hidden.join, - mode = (m.hidden.mode == "Ad-Hoc" and "adhoc" or "sta"), - network = net:name() - } - - if m.hidden.wep == "1" then - wconf.encryption = "wep-open" - wconf.key = "1" - wconf.key1 = key and key:formvalue(section) or "" - elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then - wconf.encryption = (tonumber(m.hidden.wpa_version) or 0) >= 2 and "psk2" or "psk" - wconf.key = key and key:formvalue(section) or "" - else - wconf.encryption = "none" - end + local wconf = { + device = m.hidden.device, + ssid = m.hidden.join, + mode = (m.hidden.mode == "Ad-Hoc" and "adhoc" or "sta") + } + + if m.hidden.wep == "1" then + wconf.encryption = "wep-open" + wconf.key = "1" + wconf.key1 = key and key:formvalue(section) or "" + elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then + wconf.encryption = (tonumber(m.hidden.wpa_version) or 0) >= 2 and "psk2" or "psk" + wconf.key = key and key:formvalue(section) or "" + else + wconf.encryption = "none" + end - if wconf.mode == "adhoc" then - wconf.bssid = m.hidden.bssid - end + if wconf.mode == "adhoc" then + wconf.bssid = m.hidden.bssid + end + + local value = self:formvalue(section) + net = nw:add_network(value, { proto = "dhcp" }) + + if not net then + self.error = { [section] = "missing" } + else + wconf.network = net:name() local wnet = wdev:add_wifinet(wconf) if wnet then |