| // Copyright 2015 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris | 
 |  | 
 | package net | 
 |  | 
 | import "internal/poll" | 
 |  | 
 | var ( | 
 | 	// Placeholders for saving original socket system calls. | 
 | 	origSocket        = socketFunc | 
 | 	origClose         = poll.CloseFunc | 
 | 	origConnect       = connectFunc | 
 | 	origListen        = listenFunc | 
 | 	origAccept        = poll.AcceptFunc | 
 | 	origGetsockoptInt = getsockoptIntFunc | 
 |  | 
 | 	extraTestHookInstallers   []func() | 
 | 	extraTestHookUninstallers []func() | 
 | ) | 
 |  | 
 | func installTestHooks() { | 
 | 	socketFunc = sw.Socket | 
 | 	poll.CloseFunc = sw.Close | 
 | 	connectFunc = sw.Connect | 
 | 	listenFunc = sw.Listen | 
 | 	poll.AcceptFunc = sw.Accept | 
 | 	getsockoptIntFunc = sw.GetsockoptInt | 
 |  | 
 | 	for _, fn := range extraTestHookInstallers { | 
 | 		fn() | 
 | 	} | 
 | } | 
 |  | 
 | func uninstallTestHooks() { | 
 | 	socketFunc = origSocket | 
 | 	poll.CloseFunc = origClose | 
 | 	connectFunc = origConnect | 
 | 	listenFunc = origListen | 
 | 	poll.AcceptFunc = origAccept | 
 | 	getsockoptIntFunc = origGetsockoptInt | 
 |  | 
 | 	for _, fn := range extraTestHookUninstallers { | 
 | 		fn() | 
 | 	} | 
 | } | 
 |  | 
 | // forceCloseSockets must be called only from TestMain. | 
 | func forceCloseSockets() { | 
 | 	for s := range sw.Sockets() { | 
 | 		poll.CloseFunc(s) | 
 | 	} | 
 | } |