diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2012-11-21 20:13:53 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2012-11-21 20:13:53 +0000 |
commit | 06c8c28bab9975149f94397f3b7027712c0ba424 (patch) | |
tree | d83d4cc191888378774c091d7a1b01422c59eeb1 /libs/core | |
parent | 7399e07593f79334ae5342faf5c9f0687caf6c2d (diff) |
libs/core: introduce get_status_by_address() in luci.model.network
Diffstat (limited to 'libs/core')
-rw-r--r-- | libs/core/luasrc/model/network.lua | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libs/core/luasrc/model/network.lua b/libs/core/luasrc/model/network.lua index cc572298c..56f1751f8 100644 --- a/libs/core/luasrc/model/network.lua +++ b/libs/core/luasrc/model/network.lua @@ -623,6 +623,32 @@ function get_status_by_route(self, addr, mask) end end +function get_status_by_address(self, addr) + local _, object + for _, object in ipairs(_ubus:objects()) do + local net = object:match("^network%.interface%.(.+)") + if net then + local s = _ubus:call(object, "status", {}) + if s and s['ipv4-address'] then + local a + for _, a in ipairs(s['ipv4-address']) do + if a.address == addr then + return net, s + end + end + end + if s and s['ipv6-address'] then + local a + for _, a in ipairs(s['ipv6-address']) do + if a.address == addr then + return net, s + end + end + end + end + end +end + function get_wannet(self) local net = self:get_status_by_route("0.0.0.0", 0) return net and network(net) |