Changeset 5512

Show
Ignore:
Timestamp:
11/08/09 03:34:31 (4 years ago)
Author:
jow
Message:

libs/core: implement add_network() and del_network() in wireless model

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • luci/trunk/libs/core/luasrc/model/wireless.lua

    r5461 r5512  
    1818]]-- 
    1919 
    20 local pairs, i18n, uci, math = pairs, luci.i18n, luci.model.uci, math 
     20local pairs, type, i18n, uci, math = pairs, type, luci.i18n, luci.model.uci, math 
    2121 
    2222local iwi = require "iwinfo" 
     
    8282            if ifs[n].sid == id then 
    8383                return network(id) 
     84            end 
     85        end 
     86    end 
     87end 
     88 
     89function add_network(self, options) 
     90    if type(options) == "table" and options.device and 
     91        ub.uci:get("wireless", options.device) == "wifi-device" 
     92    then 
     93        local s = ub.uci:section("wireless", "wifi-iface", nil, options) 
     94        local c = 1 
     95        ub.uci:foreach("wireless", "wifi-iface", function(s) c = c + 1 end) 
     96 
     97        local id = "%s.network%d" %{ options.device, c } 
     98        ifs[id] = { 
     99            id    = id, 
     100            sid   = s, 
     101            count = c 
     102        } 
     103 
     104        local wtype = iwi.type(options.device) 
     105        if wtype then 
     106            ifs[id].winfo = iwi[wtype] 
     107            ifs[id].wdev  = options.device 
     108        end 
     109 
     110        return network(s) 
     111    end 
     112end 
     113 
     114function del_network(self, id) 
     115    if ifs[id] then 
     116        ub.uci:delete("wireless", ifs[id].sid) 
     117        ifs[id] = nil 
     118    else 
     119        local n 
     120        for n, _ in pairs(ifs) do 
     121            if ifs[n].sid == id then 
     122                ub.uci:delete("wireless", id) 
     123                ifs[n] = nil 
    84124            end 
    85125        end 
     
    107147    else 
    108148        return "%s: %q" %{ i18n.translate("Wireless Network"), iface:name() } 
    109     end 
    110 end 
    111  
    112 function del_network(self, id) 
    113     if ifs[id] then 
    114         ub.uci:delete("wireless", ifs[id].sid) 
    115         ifs[id] = nil 
    116     else 
    117         local n 
    118         for n, _ in pairs(ifs) do 
    119             if ifs[n].sid == id then 
    120                 ub.uci:delete("wireless", id) 
    121                 ifs[n] = nil 
    122             end 
    123         end 
    124149    end 
    125150end 
     
    215240 
    216241    local parent_dev = st:get("wireless", sid, "device") 
     242        or ub.uci:get("wireless", sid, "device") 
    217243 
    218244    local dev = st:get("wireless", sid, "ifname")