luci-base: luci.sys.net: use luci.ip.neighbors() instead of /proc/net/arp
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 20 Jan 2016 16:27:51 +0000 (17:27 +0100)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 20 Jan 2016 16:27:51 +0000 (17:27 +0100)
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
modules/luci-base/luasrc/sys.lua

index 5d203aa8f866c928bd63bf916b8e366b0c44f7b2..a1b5b8f645660388aa04c8da5f1c594b26c58eed 100644 (file)
@@ -168,14 +168,13 @@ local function _nethints(what, callback)
                end
        end
 
-       if fs.access("/proc/net/arp") then
-               for e in io.lines("/proc/net/arp") do
-                       ip, mac = e:match("^([%d%.]+)%s+%S+%s+%S+%s+([a-fA-F0-9:]+)%s+")
-                       if ip and mac then
-                               _add(what, mac:upper(), ip, nil, nil)
-                       end
+       luci.ip.neighbors(nil, function(neigh)
+               if neigh.mac and neigh.family == 4 then
+                       _add(what, neigh.mac:upper(), neigh.dest:string(), nil, nil)
+               elseif neigh.mac and neigh.family == 6 then
+                       _add(what, neigh.mac:upper(), nil, neigh.dest:string(), nil)
                end
-       end
+       end)
 
        if fs.access("/etc/ethers") then
                for e in io.lines("/etc/ethers") do