diff --git a/lib/netutil.lua b/lib/netutil.lua index 98a88a2..1d569a1 100644 --- a/lib/netutil.lua +++ b/lib/netutil.lua @@ -1,5 +1,6 @@ local computer = require "computer" local minitel = require "minitel" +local event = require "event" local rpc = require "rpc" local netutil = {} @@ -9,6 +10,7 @@ function netutil.importfs(host,rpath,lpath) return host..":"..rpath end fs.mount(lpath,px) + return true end function netutil.exportfs(path) @@ -18,21 +20,29 @@ function netutil.exportfs(path) rpcs.register(path.."_"..k,v) print(path.."_"..k) end + return true end -function netutil.ping(addr,times,timeout) +function netutil.ping(addr,times,timeout, silent) local times, timeout = times or 5, timeout or 30 + local success, fail, time, avg = 0, 0, 0, 0 for i = 1, times do local ipt = computer.uptime() local pid = minitel.genPacketID() computer.pushSignal("net_send",1,addr,0,"ping",pid) local t,a = event.pull(timeout,"net_ack") if t == "net_ack" and a == pid then - print("Ping reply: "..tostring(computer.uptime()-ipt).." seconds.") + if not silent then print("Ping reply: "..tostring(computer.uptime()-ipt).." seconds.") end + success = success + 1 + time = time + computer.uptime()-ipt + avg = time / success else - print("Timed out.") + if not silent then print("Timed out.") end + fail = fail + 1 end end + if not silent then print(string.format("%d packets transmitted, %d received, %0.0f%% packet loss, %0.1fs",times,success,fail/times*100,time)) end + return success > 0, success, fail, avg end return netutil