Initial commit, derived from former development (2018-2020=

This commit is contained in:
2023-11-02 09:17:47 +01:00
parent e234ebcaf9
commit b2948546dc
7 changed files with 1380 additions and 3 deletions

32
tools.go Normal file
View 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
}