local type, next, pairs, ipairs, loadfile, table
= type, next, pairs, ipairs, loadfile, table
-local tonumber, tostring, math, i18n
- = tonumber, tostring, math, luci.i18n
+local tonumber, tostring, math = tonumber, tostring, math
local require = require
local utl = require "luci.util"
local dsp = require "luci.dispatcher"
local uci = require "luci.model.uci"
+local lng = require "luci.i18n"
module "luci.model.network"
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)
function protocol.get_i18n(self)
local p = self:proto()
if p == "none" then
- return i18n.translate("Unmanaged")
+ return lng.translate("Unmanaged")
elseif p == "static" then
- return i18n.translate("Static address")
+ return lng.translate("Static address")
elseif p == "dhcp" then
- return i18n.translate("DHCP client")
+ return lng.translate("DHCP client")
+ elseif p == "dhcpv6" then
+ return lng.translate("DHCPv6 client")
else
- return i18n.translate("Unknown")
+ return lng.translate("Unknown")
end
end
function interface.get_i18n(self)
if self.wif then
return "%s: %s %q" %{
- i18n.translate("Wireless Network"),
+ lng.translate("Wireless Network"),
self.wif:active_mode(),
self.wif:active_ssid() or self.wif:active_bssid()
}
function interface.get_type_i18n(self)
local x = self:type()
if x == "wifi" then
- return i18n.translate("Wireless Adapter")
+ return lng.translate("Wireless Adapter")
elseif x == "bridge" then
- return i18n.translate("Bridge")
+ return lng.translate("Bridge")
elseif x == "switch" then
- return i18n.translate("Ethernet Switch")
+ return lng.translate("Ethernet Switch")
elseif x == "vlan" then
- return i18n.translate("VLAN Interface")
+ return lng.translate("VLAN Interface")
elseif x == "tunnel" then
- return i18n.translate("Tunnel Interface")
+ return lng.translate("Tunnel Interface")
else
- return i18n.translate("Ethernet Adapter")
+ return lng.translate("Ethernet Adapter")
end
end
return self.dev and self.dev.bridge and true or false
end
-local function uint(x)
- if x then
- return (x < 0) and ((2^32) + x) or x
- end
- return 0
-end
-
function interface.tx_bytes(self)
local stat = self:_ubus("statistics")
- return stat and uint(stat.tx_bytes) or 0
+ return stat and stat.tx_bytes or 0
end
function interface.rx_bytes(self)
local stat = self:_ubus("statistics")
- return stat and uint(stat.rx_bytes) or 0
+ return stat and stat.rx_bytes or 0
end
function interface.tx_packets(self)
local stat = self:_ubus("statistics")
- return stat and uint(stat.tx_packets) or 0
+ return stat and stat.tx_packets or 0
end
function interface.rx_packets(self)
local stat = self:_ubus("statistics")
- return stat and uint(stat.rx_packets) or 0
+ return stat and stat.rx_packets or 0
end
function interface.get_network(self)
end
function wifinet.active_mode_i18n(self)
- return i18n.translate(self:active_mode())
+ return lng.translate(self:active_mode())
end
function wifinet.active_ssid(self)
function wifinet.shortname(self)
return "%s %q" %{
- i18n.translate(self:active_mode()),
+ lng.translate(self:active_mode()),
self:active_ssid() or self:active_bssid()
}
end
function wifinet.get_i18n(self)
return "%s: %s %q (%s)" %{
- i18n.translate("Wireless Network"),
- i18n.translate(self:active_mode()),
+ lng.translate("Wireless Network"),
+ lng.translate(self:active_mode()),
self:active_ssid() or self:active_bssid(),
self:ifname()
}
-- setup base protocols
_M:register_protocol("static")
_M:register_protocol("dhcp")
+
+local dhcpv6 = _M:register_protocol("dhcpv6")
+function dhcpv6.is_installed(self)
+ return nfs.access("/lib/netifd/proto/dhcpv6.sh")
+end
+
_M:register_protocol("none")
+
-- load protocol extensions
local exts = nfs.dir(utl.libpath() .. "/model/network")
if exts then