github.com/ltltlt/go-source-code@v0.0.0-20190830023027-95be009773aa/net/main_posix_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build !plan9 6 7 package net 8 9 import ( 10 "net/internal/socktest" 11 "strings" 12 "syscall" 13 ) 14 15 func enableSocketConnect() { 16 sw.Set(socktest.FilterConnect, nil) 17 } 18 19 func disableSocketConnect(network string) { 20 ss := strings.Split(network, ":") 21 sw.Set(socktest.FilterConnect, func(so *socktest.Status) (socktest.AfterFilter, error) { 22 switch ss[0] { 23 case "tcp4": 24 if so.Cookie.Family() == syscall.AF_INET && so.Cookie.Type() == syscall.SOCK_STREAM { 25 return nil, syscall.EHOSTUNREACH 26 } 27 case "udp4": 28 if so.Cookie.Family() == syscall.AF_INET && so.Cookie.Type() == syscall.SOCK_DGRAM { 29 return nil, syscall.EHOSTUNREACH 30 } 31 case "ip4": 32 if so.Cookie.Family() == syscall.AF_INET && so.Cookie.Type() == syscall.SOCK_RAW { 33 return nil, syscall.EHOSTUNREACH 34 } 35 case "tcp6": 36 if so.Cookie.Family() == syscall.AF_INET6 && so.Cookie.Type() == syscall.SOCK_STREAM { 37 return nil, syscall.EHOSTUNREACH 38 } 39 case "udp6": 40 if so.Cookie.Family() == syscall.AF_INET6 && so.Cookie.Type() == syscall.SOCK_DGRAM { 41 return nil, syscall.EHOSTUNREACH 42 } 43 case "ip6": 44 if so.Cookie.Family() == syscall.AF_INET6 && so.Cookie.Type() == syscall.SOCK_RAW { 45 return nil, syscall.EHOSTUNREACH 46 } 47 } 48 return nil, nil 49 }) 50 }