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 a1ecbe71d0ec75adda91cdaca5f588cee2d80845..4da0cf984b252eef1c344a95be8e1e413bc53c49 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