luci-base: luci.tools.status: properly parse infinite odhcpd leases

The expiry time in an odhcpd lease file line may be -1 to denote an infinite
lease time, so adjust the code to properly support that.

The expiry attribute of the lease object will be set to "false" in case of an
infinite lease.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2016-12-09 13:05:44 +01:00
parent 6d5f878d7c
commit 8e9e92a630

View file

@ -63,17 +63,18 @@ local function dhcp_leases_common(family)
if not ln then if not ln then
break break
else else
local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (%d+) (%S+) (%S+) (.*)") local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (-?%d+) (%S+) (%S+) (.*)")
local expire = tonumber(ts) or 0
if ip and iaid ~= "ipv4" and family == 6 then if ip and iaid ~= "ipv4" and family == 6 then
rv[#rv+1] = { rv[#rv+1] = {
expires = os.difftime(tonumber(ts) or 0, os.time()), expires = (expire >= 0) and os.difftime(expire, os.time()),
duid = duid, duid = duid,
ip6addr = ip, ip6addr = ip,
hostname = (name ~= "-") and name hostname = (name ~= "-") and name
} }
elseif ip and iaid == "ipv4" and family == 4 then elseif ip and iaid == "ipv4" and family == 4 then
rv[#rv+1] = { rv[#rv+1] = {
expires = os.difftime(tonumber(ts) or 0, os.time()), expires = (expire >= 0) and os.difftime(expire, os.time()),
macaddr = duid, macaddr = duid,
ipaddr = ip, ipaddr = ip,
hostname = (name ~= "-") and name hostname = (name ~= "-") and name