diff options
| author | Simon Rozman <simon@rozman.si> | 2023-03-23 10:23:18 +0100 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2023-09-25 09:43:37 +0200 |
| commit | 498b747669e97e8af414a369433c04371396f08c (patch) | |
| tree | 5829ff36ae8c46214fd651b77a98647250940575 /internal/failover/ping_default.go | |
| parent | eb57e36d3c017bef80277e97db1009c38893ce2d (diff) | |
Fix connection monitoring on Windows
Linux requires su for `ip4:icmp` pings. Windows does not support `udp4`
pings.
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to 'internal/failover/ping_default.go')
| -rw-r--r-- | internal/failover/ping_default.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/internal/failover/ping_default.go b/internal/failover/ping_default.go new file mode 100644 index 0000000..961c6db --- /dev/null +++ b/internal/failover/ping_default.go @@ -0,0 +1,21 @@ +//go:build !windows + +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("udp4", "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.UDPAddr{IP: net.ParseIP(gateway)}}, nil +} |
