summaryrefslogtreecommitdiff
path: root/internal/failover/ping_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/failover/ping_windows.go')
-rw-r--r--internal/failover/ping_windows.go19
1 files changed, 19 insertions, 0 deletions
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
+}