mirror of
https://github.com/slackhq/nebula.git
synced 2026-11-15 10:16:52 +01:00
Probe for another path when a keepalive punch finds a tunnel's remote unreachable
This commit is contained in:
1 parent
2fd9966fef
commit
0f07faab0e
6 files changed
+288
-28
No files matched your search
@@ -0,0 +1,37 @@
|
||||
//go:build !windows
|
||||
|
||||
package udp
|
||||
|
||||
import (
|
||||
"net"
|
||||
"syscall"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIsUnreachable(t *testing.T) {
|
||||
wrap := func(err error) error { return &net.OpError{Op: "write", Net: "udp", Err: err} }
|
||||
|
||||
for _, err := range []error{
|
||||
wrap(syscall.ENETUNREACH),
|
||||
wrap(syscall.EHOSTUNREACH),
|
||||
wrap(syscall.EADDRNOTAVAIL),
|
||||
wrap(syscall.EAFNOSUPPORT),
|
||||
ErrInvalidIPv6RemoteForSocket,
|
||||
} {
|
||||
if !IsUnreachable(err) {
|
||||
t.Errorf("IsUnreachable(%v) = false, want true", err)
|
||||
}
|
||||
}
|
||||
|
||||
for _, err := range []error{
|
||||
nil,
|
||||
wrap(syscall.EPERM),
|
||||
wrap(syscall.ENOBUFS),
|
||||
wrap(syscall.EMSGSIZE),
|
||||
net.ErrClosed,
|
||||
} {
|
||||
if IsUnreachable(err) {
|
||||
t.Errorf("IsUnreachable(%v) = true, want false", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user