|
|
@@ -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 |