NIU: Minor fixes
[project/luci.git] / modules / niu / luasrc / model / cbi / niu / network / wan.lua
index 1724c4a..b8d572d 100644 (file)
@@ -21,7 +21,21 @@ local function deviceroute(self)
        
        if wd:find("ethernet:") == 1 then
                cursor:set("network", "wan", "defaultroute", "1")
-               cursor:set("network", "wan", "ifname", wd:sub(10))
+               if wd:find("!", 10) == 10 then  --Unbridge from LAN
+                       local ethdev = wd:sub(11)
+                       local ifname = cursor:get("network", "lan", "ifname")
+                       local newifname = {}
+                       for k in ifname:gmatch("[^ ]+") do
+                               if k ~= ifname then
+                                       newifname[#newifname+1] = k
+                               end
+                       end
+                       cursor:set("network", "lan", "ifname", table.concat(newifname, " "))
+                       cursor:set("network", "wan", "_wandev", "ethernet:" .. ethdev)
+                       cursor:set("network", "wan", "ifname", ethdev)
+               else
+                       cursor:set("network", "wan", "ifname", wd:sub(10))
+               end
                self:set_route("etherwan")
        else
                cursor:delete("network", "wan", "ifname")
@@ -31,7 +45,12 @@ local function deviceroute(self)
                local widev = wd:sub(6)
                if cursor:get("wireless", "client", "device") ~= widev then
                        cursor:delete("wireless", "client", "network")
+                       cursor:set("wireless", "client", "mode", "sta")
                        cursor:set("wireless", "client", "device", widev)
+                       cursor:delete_all("wireless", "wifi-iface", function(s)
+                               return s.device == widev and s._niu ~= "1"
+                       end)
+                       cursor:set("wireless", widev, "disabled", 0)
                end
                self:set_route("wlanwan1", "wlanwan2")
        else