mirror of https://github.com/v2ray/v2ray-core
Darien Raymond
7 years ago
2 changed files with 2 additions and 44 deletions
@ -1,44 +0,0 @@
|
||||
package net |
||||
|
||||
import ( |
||||
"net" |
||||
"sync/atomic" |
||||
"unsafe" |
||||
) |
||||
|
||||
// IPResolver is the interface to resolve host name to IPs.
|
||||
type IPResolver interface { |
||||
LookupIP(host string) ([]net.IP, error) |
||||
} |
||||
|
||||
type systemIPResolver int |
||||
|
||||
func (s systemIPResolver) LookupIP(host string) ([]net.IP, error) { |
||||
return net.LookupIP(host) |
||||
} |
||||
|
||||
const ( |
||||
systemIPResolverInstance = systemIPResolver(0) |
||||
) |
||||
|
||||
// SystemIPResolver returns an IPResolver that resolves IP through underlying system.
|
||||
func SystemIPResolver() IPResolver { |
||||
return systemIPResolverInstance |
||||
} |
||||
|
||||
var ( |
||||
ipResolver unsafe.Pointer |
||||
) |
||||
|
||||
func LookupIP(host string) ([]net.IP, error) { |
||||
r := (*IPResolver)(atomic.LoadPointer(&ipResolver)) |
||||
return (*r).LookupIP(host) |
||||
} |
||||
|
||||
func RegisterIPResolver(resolver IPResolver) { |
||||
atomic.StorePointer(&ipResolver, unsafe.Pointer(&resolver)) |
||||
} |
||||
|
||||
func init() { |
||||
RegisterIPResolver(systemIPResolverInstance) |
||||
} |
Loading…
Reference in new issue