diff --git a/src/net/main_posix_test.go b/src/net/main_posix_test.go index da80ff03c8..ead311c3cd 100644 --- a/src/net/main_posix_test.go +++ b/src/net/main_posix_test.go @@ -20,12 +20,28 @@ func disableSocketConnect(network string) { ss := strings.Split(network, ":") sw.Set(socktest.FilterConnect, func(so *socktest.Status) (socktest.AfterFilter, error) { switch ss[0] { - case "tcp4", "udp4", "ip4": - if so.Cookie.Family() == syscall.AF_INET { + case "tcp4": + if so.Cookie.Family() == syscall.AF_INET && so.Cookie.Type() == syscall.SOCK_STREAM { return nil, syscall.EHOSTUNREACH } - case "tcp6", "udp6", "ip6": - if so.Cookie.Family() == syscall.AF_INET6 { + case "udp4": + if so.Cookie.Family() == syscall.AF_INET && so.Cookie.Type() == syscall.SOCK_DGRAM { + return nil, syscall.EHOSTUNREACH + } + case "ip4": + if so.Cookie.Family() == syscall.AF_INET && so.Cookie.Type() == syscall.SOCK_RAW { + return nil, syscall.EHOSTUNREACH + } + case "tcp6": + if so.Cookie.Family() == syscall.AF_INET6 && so.Cookie.Type() == syscall.SOCK_STREAM { + return nil, syscall.EHOSTUNREACH + } + case "udp6": + if so.Cookie.Family() == syscall.AF_INET6 && so.Cookie.Type() == syscall.SOCK_DGRAM { + return nil, syscall.EHOSTUNREACH + } + case "ip6": + if so.Cookie.Family() == syscall.AF_INET6 && so.Cookie.Type() == syscall.SOCK_RAW { return nil, syscall.EHOSTUNREACH } }