luci-base: luci.tools.status: properly parse infinite odhcpd leases
authorJo-Philipp Wich <jo@mein.io>
Fri, 9 Dec 2016 12:05:44 +0000 (13:05 +0100)
committerJo-Philipp Wich <jo@mein.io>
Fri, 9 Dec 2016 12:05:44 +0000 (13:05 +0100)
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>
modules/luci-base/luasrc/tools/status.lua

index a1ecbe7..4da0cf9 100644 (file)
@@ -63,17 +63,18 @@ local function dhcp_leases_common(family)
                        if not ln then
                                break
                        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
                                        rv[#rv+1] = {
-                                               expires  = os.difftime(tonumber(ts) or 0, os.time()),
+                                               expires  = (expire >= 0) and os.difftime(expire, os.time()),
                                                duid     = duid,
                                                ip6addr  = ip,
                                                hostname = (name ~= "-") and name
                                        }
                                elseif ip and iaid == "ipv4" and family == 4 then
                                        rv[#rv+1] = {
-                                               expires  = os.difftime(tonumber(ts) or 0, os.time()),
+                                               expires  = (expire >= 0) and os.difftime(expire, os.time()),
                                                macaddr  = duid,
                                                ipaddr   = ip,
                                                hostname = (name ~= "-") and name