X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=modules%2Fadmin-core%2Fluasrc%2Ftools%2Fstatus.lua;h=cd543f71e8bba3219a91ab744912e8bab73c0f63;hb=dce04bbcb2b2b41898281ed5de0622705bf17b1e;hp=2eef3e0e1c7f1c700f9cd56a02bc853b29e773ad;hpb=044b011051086b9cb845e497c0a620cdecd038a6;p=project%2Fluci.git diff --git a/modules/admin-core/luasrc/tools/status.lua b/modules/admin-core/luasrc/tools/status.lua index 2eef3e0e1..cd543f71e 100644 --- a/modules/admin-core/luasrc/tools/status.lua +++ b/modules/admin-core/luasrc/tools/status.lua @@ -16,7 +16,7 @@ module("luci.tools.status", package.seeall) local uci = require "luci.model.uci".cursor() -function dhcp_leases() +local function dhcp_leases_common(family) local rv = { } local nfs = require "nixio.fs" local leasefile = "/var/dhcp.leases" @@ -36,14 +36,23 @@ function dhcp_leases() if not ln then break else - local ts, mac, ip, name = ln:match("^(%d+) (%S+) (%S+) (%S+)") - if ts and mac and ip and name then - rv[#rv+1] = { - expires = os.difftime(tonumber(ts) or 0, os.time()), - macaddr = mac, - ipaddr = ip, - hostname = (name ~= "*") and name - } + local ts, mac, ip, name, duid = ln:match("^(%d+) (%S+) (%S+) (%S+) (%S+)") + if ts and mac and ip and name and duid then + if family == 4 and not ip:match(":") then + rv[#rv+1] = { + expires = os.difftime(tonumber(ts) or 0, os.time()), + macaddr = mac, + ipaddr = ip, + hostname = (name ~= "*") and name + } + elseif family == 6 and ip:match(":") then + rv[#rv+1] = { + expires = os.difftime(tonumber(ts) or 0, os.time()), + ip6addr = ip, + duid = (duid ~= "*") and duid, + hostname = (name ~= "*") and name + } + end end end end @@ -53,6 +62,18 @@ function dhcp_leases() return rv end +function dhcp_leases() + return dhcp_leases_common(4) +end + +function dhcp6_leases() + if luci.sys.call("dnsmasq --version 2>/dev/null | grep -q ' DHCPv6 '") == 0 then + return dhcp_leases_common(6) + else + return nil + end +end + function wifi_networks() local rv = { } local ntm = require "luci.model.network".init()