function act_status()
local uci = luci.model.uci.cursor()
local lease_file = uci:get("upnpd", "config", "upnp_lease_file")
+
+ local ipv4_hints = luci.sys.net.ipv4_hints()
local ipt = io.popen("iptables --line-numbers -t nat -xnvL MINIUPNPD 2>/dev/null")
if ipt then
if uln then descr = uln:match(string.format("^%s:%d:%s:%d:%%d*:(.*)$", proto:upper(), extport, intaddr, intport)) end
if not descr then descr = "" end
end
+
+ local host_hint, _, e
+
+ for _,e in pairs(ipv4_hints) do
+ if e[1] == intaddr then
+ host_hint = e[2]
+ break
+ end
+ end
fwd[#fwd+1] = {
num = num,
proto = proto:upper(),
extport = extport,
intaddr = intaddr,
+ host_hint = host_hint,
intport = intport,
descr = descr
}
st[i].proto,
st[i].extport,
st[i].intaddr,
+ st[i].host_hint || "<%:Unknown%>",
st[i].intport,
st[i].descr,
E('<input class="cbi-button cbi-button-remove" type="button" value="<%:Delete%>" onclick="upnp_delete_fwd(%d)" />'.format(st[i].num))
<div class="th"><%:Protocol%></div>
<div class="th"><%:External Port%></div>
<div class="th"><%:Client Address%></div>
+ <div class="th"><%:Host%></div>
<div class="th"><%:Client Port%></div>
<div class="th"><%:Description%></div>
<div class="th cbi-section-actions"> </div>