From 498b747669e97e8af414a369433c04371396f08c Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Thu, 23 Mar 2023 10:23:18 +0100 Subject: Fix connection monitoring on Windows Linux requires su for `ip4:icmp` pings. Windows does not support `udp4` pings. Signed-off-by: Simon Rozman --- internal/failover/ping_windows.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 internal/failover/ping_windows.go (limited to 'internal/failover/ping_windows.go') diff --git a/internal/failover/ping_windows.go b/internal/failover/ping_windows.go new file mode 100644 index 0000000..2a39003 --- /dev/null +++ b/internal/failover/ping_windows.go @@ -0,0 +1,19 @@ +package failover + +import ( + "net" + + "github.com/go-errors/errors" + "golang.org/x/net/icmp" +) + +func NewPinger(gateway string, size int) (*Pinger, error) { + l, err := icmp.ListenPacket("ip4:icmp", "0.0.0.0") + if err != nil { + return nil, errors.WrapPrefix(err, "failed creating ping", 0) + } + return &Pinger{ + listener: l, + buffer: make([]byte, size-mtuOverhead), + gateway: &net.IPAddr{IP: net.ParseIP(gateway)}}, nil +} -- cgit v1.2.3