_arpcache = {}
_ARPCACHE4 = '/sbin/ip -4 n'
-_ARPCACHE6 = '/sbin/ip -6 n'
function _match_v4(ip)
return string.match(ip,"%d*%.%d*%.%d*%.%d*")
end
+_arpcache.cache = {}
+
function _arpcache.get_mac(ip)
+ local rec = _arpcache.cache[ip]
+ if rec and rec.timestamp+config.arp_ttl > os.time() then
+ return rec["mac"]
+ end
+
local cmd
if _match_v4(ip) then
cmd = _ARPCACHE4
else
- cmd = _ARPCACHE6
+ return "OK"
end
local f = io.popen(cmd)
if w[1]==ip then
res = w[5]
+
break
end
end
+ if res then
+ _arpcache.cache[ip] = { mac = res, timestamp = os.time() }
+ end
+
f:close()
return res