local computer = require "computer" local minitel = require "minitel" local event = require "event" local rpc = require "rpc" local netutil = {} function netutil.importfs(host,rpath,lpath) local px = rpc.proxy(host,rpath.."_") function px.getLabel() return host..":"..rpath end fs.mount(lpath,px) return true end function netutil.exportfs(path) local path = "/"..table.concat(fs.segments(path),"/") local px = ufs.create(path) for k,v in pairs(px) do rpcs.register(path.."_"..k,v) print(path.."_"..k) end return true end 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 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 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