Initial commit, derived from former development (2018-2020=
This commit is contained in:
32
tools.go
Normal file
32
tools.go
Normal file
@@ -0,0 +1,32 @@
|
||||
// wrap7 project wrap7.go
|
||||
package wrap7
|
||||
|
||||
import (
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/go-ping/ping"
|
||||
)
|
||||
|
||||
const (
|
||||
PINGER_COUNT = 10 // Die Anzahl an Pings, die der Pinger zur Auswertung heranzieht. Pinger-Counts kosten richtig viel Zeit. Leider ist ein Ping alleine viel zu ungenau.
|
||||
PINGER_TIMEOUT = "1000ms" // Sobald der Pinger innerhalb dieser Zeitspanne keinen Erfolg hat, liefert er 0ms Pingzeit und 100% Paketloss zur?ck.
|
||||
PINGER_CRITICAL_LOSS_PERCENT = 100
|
||||
)
|
||||
|
||||
func pingMyDing(myIp net.IP) (time.Duration, float64) { //Die Konversion zu net.Ip ist eigentlich überflüssig, die Limitierung des Typs an der Schnittstelle erspart aber nachgelagerte Plausibilitätsprüfungen.
|
||||
pinger, err := ping.NewPinger(myIp.String())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
pinger.Count = PINGER_COUNT
|
||||
pinger.Timeout, _ = time.ParseDuration(PINGER_TIMEOUT)
|
||||
//pinger.Interval, _ = time.ParseDuration(PINGER_INTERVAL)
|
||||
|
||||
//sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"
|
||||
pinger.SetPrivileged(false)
|
||||
pinger.Run() // blocks until finished
|
||||
stats := pinger.Statistics() // get send/receive/rtt stats
|
||||
return stats.AvgRtt, stats.PacketLoss
|
||||
}
|
||||
Reference in New Issue
Block a user