treewide: filter shell arguments through shellquote() where applicable
[project/luci.git] / modules / luci-mod-admin-full / luasrc / model / cbi / admin_network / hosts.lua
index da7c118..46945af 100644 (file)
@@ -1,9 +1,10 @@
 -- Copyright 2008 Steven Barth <steven@midlink.org>
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2010-2015 Jo-Philipp Wich <jow@openwrt.org>
 -- Licensed to the public under the Apache License 2.0.
 
-require("luci.sys")
-require("luci.util")
+local ipc = require "luci.ip"
+local sys = require "luci.sys"
+
 m = Map("dhcp", translate("Hostnames"))
 
 s = m:section(TypedSection, "domain", translate("Host entries"))
@@ -19,12 +20,12 @@ ip = s:option(Value, "ip", translate("IP address"))
 ip.datatype = "ipaddr"
 ip.rmempty  = true
 
-local arptable = luci.sys.net.arptable() or {}
-for i, dataset in ipairs(arptable) do
-       ip:value(
-               dataset["IP address"],
-               "%s (%s)" %{ dataset["IP address"], dataset["HW address"] }
-       )
-end
+sys.net.host_hints(function(mac, v4, v6, name)
+       v6 = v6 and ipc.IPv6(v6)
+
+       if v4 or (v6 and not v6:is6linklocal()) then
+               ip:value(tostring(v4 or v6), "%s (%s)" %{ tostring(v4 or v6), name or mac })
+       end
+end)
 
 return m