X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/src/net
opt
/
golang
/
1.17.2
/
src
/
net
/
📁
..
📄
addrselect.go
(9.59 KB)
📄
addrselect_test.go
(6.28 KB)
📄
cgo_aix.go
(603 B)
📄
cgo_android.go
(293 B)
📄
cgo_bsd.go
(419 B)
📄
cgo_linux.go
(672 B)
📄
cgo_netbsd.go
(297 B)
📄
cgo_openbsd.go
(297 B)
📄
cgo_resnew.go
(668 B)
📄
cgo_resold.go
(654 B)
📄
cgo_socknew.go
(816 B)
📄
cgo_sockold.go
(937 B)
📄
cgo_solaris.go
(364 B)
📄
cgo_stub.go
(1.08 KB)
📄
cgo_unix.go
(9.65 KB)
📄
cgo_unix_test.go
(2.01 KB)
📄
cgo_windows.go
(423 B)
📄
conf.go
(8.78 KB)
📄
conf_netcgo.go
(387 B)
📄
conf_test.go
(9.76 KB)
📄
conn_test.go
(1.79 KB)
📄
dial.go
(22.72 KB)
📄
dial_test.go
(26.02 KB)
📄
dial_unix_test.go
(2.83 KB)
📄
dnsclient.go
(5.73 KB)
📄
dnsclient_test.go
(1.51 KB)
📄
dnsclient_unix.go
(22.12 KB)
📄
dnsclient_unix_test.go
(54.46 KB)
📄
dnsconfig_unix.go
(5.56 KB)
📄
dnsconfig_unix_test.go
(6.83 KB)
📄
dnsname_test.go
(1.99 KB)
📄
error_plan9.go
(224 B)
📄
error_plan9_test.go
(398 B)
📄
error_posix.go
(700 B)
📄
error_posix_test.go
(998 B)
📄
error_test.go
(19.59 KB)
📄
error_unix.go
(517 B)
📄
error_unix_test.go
(702 B)
📄
error_windows.go
(355 B)
📄
error_windows_test.go
(483 B)
📄
example_test.go
(3.88 KB)
📄
external_test.go
(4.08 KB)
📄
fcntl_libc_test.go
(400 B)
📄
fcntl_syscall_test.go
(545 B)
📄
fd_plan9.go
(3.56 KB)
📄
fd_posix.go
(2.58 KB)
📄
fd_unix.go
(5.54 KB)
📄
fd_windows.go
(4.62 KB)
📄
file.go
(1.69 KB)
📄
file_plan9.go
(2.68 KB)
📄
file_stub.go
(507 B)
📄
file_test.go
(6.55 KB)
📄
file_unix.go
(2.6 KB)
📄
file_windows.go
(521 B)
📄
hook.go
(628 B)
📄
hook_plan9.go
(283 B)
📄
hook_unix.go
(840 B)
📄
hook_windows.go
(875 B)
📄
hosts.go
(3.1 KB)
📄
hosts_test.go
(4.59 KB)
📁
http
📄
interface.go
(7.17 KB)
📄
interface_aix.go
(4.41 KB)
📄
interface_bsd.go
(2.8 KB)
📄
interface_bsd_test.go
(1.48 KB)
📄
interface_bsdvar.go
(753 B)
📄
interface_darwin.go
(1.29 KB)
📄
interface_freebsd.go
(1.42 KB)
📄
interface_linux.go
(6.9 KB)
📄
interface_linux_test.go
(3.65 KB)
📄
interface_plan9.go
(4.68 KB)
📄
interface_solaris.go
(2.07 KB)
📄
interface_stub.go
(830 B)
📄
interface_test.go
(9.68 KB)
📄
interface_unix_test.go
(4.79 KB)
📄
interface_windows.go
(5.41 KB)
📁
internal
📄
ip.go
(17.66 KB)
📄
ip_test.go
(25.33 KB)
📄
iprawsock.go
(7.08 KB)
📄
iprawsock_plan9.go
(874 B)
📄
iprawsock_posix.go
(3.56 KB)
📄
iprawsock_test.go
(5.63 KB)
📄
ipsock.go
(8.97 KB)
📄
ipsock_plan9.go
(7.5 KB)
📄
ipsock_plan9_test.go
(645 B)
📄
ipsock_posix.go
(6.28 KB)
📄
ipsock_test.go
(6.81 KB)
📄
listen_test.go
(21.34 KB)
📄
lookup.go
(21.33 KB)
📄
lookup_fake.go
(1.66 KB)
📄
lookup_plan9.go
(7.68 KB)
📄
lookup_test.go
(31.13 KB)
📄
lookup_unix.go
(8.89 KB)
📄
lookup_windows.go
(11.72 KB)
📄
lookup_windows_test.go
(8.02 KB)
📄
mac.go
(1.88 KB)
📄
mac_test.go
(3.26 KB)
📁
mail
📄
main_cloexec_test.go
(750 B)
📄
main_conf_test.go
(952 B)
📄
main_noconf_test.go
(537 B)
📄
main_plan9_test.go
(392 B)
📄
main_posix_test.go
(1.4 KB)
📄
main_test.go
(7.13 KB)
📄
main_unix_test.go
(1.33 KB)
📄
main_windows_test.go
(1.08 KB)
📄
mockserver_test.go
(11.39 KB)
📄
net.go
(22.37 KB)
📄
net_fake.go
(5.37 KB)
📄
net_test.go
(13.88 KB)
📄
net_windows_test.go
(15.94 KB)
📄
netgo_unix_test.go
(741 B)
📄
nss.go
(3.8 KB)
📄
nss_test.go
(3.42 KB)
📄
packetconn_test.go
(3.57 KB)
📄
parse.go
(7.33 KB)
📄
parse_test.go
(2.14 KB)
📄
pipe.go
(5.43 KB)
📄
pipe_test.go
(1.2 KB)
📄
platform_test.go
(4.57 KB)
📄
port.go
(1.46 KB)
📄
port_test.go
(1.34 KB)
📄
port_unix.go
(1.39 KB)
📄
protoconn_test.go
(7.24 KB)
📄
rawconn.go
(1.89 KB)
📄
rawconn_stub_test.go
(655 B)
📄
rawconn_test.go
(4.45 KB)
📄
rawconn_unix_test.go
(3.1 KB)
📄
rawconn_windows_test.go
(3.12 KB)
📁
rpc
📄
sendfile_linux.go
(1.1 KB)
📄
sendfile_stub.go
(391 B)
📄
sendfile_test.go
(6.91 KB)
📄
sendfile_unix_alt.go
(2.02 KB)
📄
sendfile_windows.go
(1.02 KB)
📄
server_test.go
(11.11 KB)
📁
smtp
📄
sock_bsd.go
(968 B)
📄
sock_cloexec.go
(1.53 KB)
📄
sock_linux.go
(1.53 KB)
📄
sock_linux_test.go
(545 B)
📄
sock_plan9.go
(262 B)
📄
sock_posix.go
(6.92 KB)
📄
sock_stub.go
(420 B)
📄
sock_windows.go
(1.16 KB)
📄
sockaddr_posix.go
(1.05 KB)
📄
sockopt_aix.go
(1.43 KB)
📄
sockopt_bsd.go
(2.26 KB)
📄
sockopt_linux.go
(1.25 KB)
📄
sockopt_plan9.go
(406 B)
📄
sockopt_posix.go
(2.76 KB)
📄
sockopt_solaris.go
(1.25 KB)
📄
sockopt_stub.go
(760 B)
📄
sockopt_windows.go
(1.51 KB)
📄
sockoptip_bsdvar.go
(929 B)
📄
sockoptip_linux.go
(735 B)
📄
sockoptip_posix.go
(1.53 KB)
📄
sockoptip_stub.go
(971 B)
📄
sockoptip_windows.go
(819 B)
📄
splice_linux.go
(1.09 KB)
📄
splice_stub.go
(304 B)
📄
splice_test.go
(10.51 KB)
📄
sys_cloexec.go
(1 KB)
📄
tcpsock.go
(9.88 KB)
📄
tcpsock_plan9.go
(2.13 KB)
📄
tcpsock_posix.go
(5.39 KB)
📄
tcpsock_test.go
(17.53 KB)
📄
tcpsock_unix_test.go
(2.41 KB)
📄
tcpsockopt_darwin.go
(770 B)
📄
tcpsockopt_dragonfly.go
(698 B)
📄
tcpsockopt_openbsd.go
(365 B)
📄
tcpsockopt_plan9.go
(525 B)
📄
tcpsockopt_posix.go
(592 B)
📄
tcpsockopt_solaris.go
(1.15 KB)
📄
tcpsockopt_stub.go
(415 B)
📄
tcpsockopt_unix.go
(757 B)
📄
tcpsockopt_windows.go
(741 B)
📁
testdata
📁
textproto
📄
timeout_test.go
(23.39 KB)
📄
udpsock.go
(9.19 KB)
📄
udpsock_plan9.go
(3.79 KB)
📄
udpsock_plan9_test.go
(1.31 KB)
📄
udpsock_posix.go
(4.27 KB)
📄
udpsock_test.go
(12.27 KB)
📄
unixsock.go
(10.17 KB)
📄
unixsock_linux_test.go
(2.29 KB)
📄
unixsock_plan9.go
(1.24 KB)
📄
unixsock_posix.go
(6.03 KB)
📄
unixsock_readmsg_cloexec.go
(691 B)
📄
unixsock_readmsg_cmsg_cloexec.go
(373 B)
📄
unixsock_readmsg_other.go
(301 B)
📄
unixsock_readmsg_test.go
(2.62 KB)
📄
unixsock_test.go
(10.56 KB)
📄
unixsock_windows_test.go
(2.09 KB)
📁
url
📄
write_unix_test.go
(1.67 KB)
📄
writev_test.go
(5.02 KB)
📄
writev_unix.go
(797 B)
Editing: lookup_plan9.go
// Copyright 2011 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. package net import ( "context" "errors" "internal/bytealg" "internal/itoa" "io" "os" ) func query(ctx context.Context, filename, query string, bufSize int) (addrs []string, err error) { queryAddrs := func() (addrs []string, err error) { file, err := os.OpenFile(filename, os.O_RDWR, 0) if err != nil { return nil, err } defer file.Close() _, err = file.Seek(0, io.SeekStart) if err != nil { return nil, err } _, err = file.WriteString(query) if err != nil { return nil, err } _, err = file.Seek(0, io.SeekStart) if err != nil { return nil, err } buf := make([]byte, bufSize) for { n, _ := file.Read(buf) if n <= 0 { break } addrs = append(addrs, string(buf[:n])) } return addrs, nil } type ret struct { addrs []string err error } ch := make(chan ret, 1) go func() { addrs, err := queryAddrs() ch <- ret{addrs: addrs, err: err} }() select { case r := <-ch: return r.addrs, r.err case <-ctx.Done(): return nil, &DNSError{ Name: query, Err: ctx.Err().Error(), IsTimeout: ctx.Err() == context.DeadlineExceeded, } } } func queryCS(ctx context.Context, net, host, service string) (res []string, err error) { switch net { case "tcp4", "tcp6": net = "tcp" case "udp4", "udp6": net = "udp" } if host == "" { host = "*" } return query(ctx, netdir+"/cs", net+"!"+host+"!"+service, 128) } func queryCS1(ctx context.Context, net string, ip IP, port int) (clone, dest string, err error) { ips := "*" if len(ip) != 0 && !ip.IsUnspecified() { ips = ip.String() } lines, err := queryCS(ctx, net, ips, itoa.Itoa(port)) if err != nil { return } f := getFields(lines[0]) if len(f) < 2 { return "", "", errors.New("bad response from ndb/cs") } clone, dest = f[0], f[1] return } func queryDNS(ctx context.Context, addr string, typ string) (res []string, err error) { return query(ctx, netdir+"/dns", addr+" "+typ, 1024) } // toLower returns a lower-case version of in. Restricting us to // ASCII is sufficient to handle the IP protocol names and allow // us to not depend on the strings and unicode packages. func toLower(in string) string { for _, c := range in { if 'A' <= c && c <= 'Z' { // Has upper case; need to fix. out := []byte(in) for i := 0; i < len(in); i++ { c := in[i] if 'A' <= c && c <= 'Z' { c += 'a' - 'A' } out[i] = c } return string(out) } } return in } // lookupProtocol looks up IP protocol name and returns // the corresponding protocol number. func lookupProtocol(ctx context.Context, name string) (proto int, err error) { lines, err := query(ctx, netdir+"/cs", "!protocol="+toLower(name), 128) if err != nil { return 0, err } if len(lines) == 0 { return 0, UnknownNetworkError(name) } f := getFields(lines[0]) if len(f) < 2 { return 0, UnknownNetworkError(name) } s := f[1] if n, _, ok := dtoi(s[bytealg.IndexByteString(s, '=')+1:]); ok { return n, nil } return 0, UnknownNetworkError(name) } func (*Resolver) lookupHost(ctx context.Context, host string) (addrs []string, err error) { // Use netdir/cs instead of netdir/dns because cs knows about // host names in local network (e.g. from /lib/ndb/local) lines, err := queryCS(ctx, "net", host, "1") if err != nil { dnsError := &DNSError{Err: err.Error(), Name: host} if stringsHasSuffix(err.Error(), "dns failure") { dnsError.Err = errNoSuchHost.Error() dnsError.IsNotFound = true } return nil, dnsError } loop: for _, line := range lines { f := getFields(line) if len(f) < 2 { continue } addr := f[1] if i := bytealg.IndexByteString(addr, '!'); i >= 0 { addr = addr[:i] // remove port } if ParseIP(addr) == nil { continue } // only return unique addresses for _, a := range addrs { if a == addr { continue loop } } addrs = append(addrs, addr) } return } func (r *Resolver) lookupIP(ctx context.Context, _, host string) (addrs []IPAddr, err error) { lits, err := r.lookupHost(ctx, host) if err != nil { return } for _, lit := range lits { host, zone := splitHostZone(lit) if ip := ParseIP(host); ip != nil { addr := IPAddr{IP: ip, Zone: zone} addrs = append(addrs, addr) } } return } func (*Resolver) lookupPort(ctx context.Context, network, service string) (port int, err error) { switch network { case "tcp4", "tcp6": network = "tcp" case "udp4", "udp6": network = "udp" } lines, err := queryCS(ctx, network, "127.0.0.1", toLower(service)) if err != nil { return } unknownPortError := &AddrError{Err: "unknown port", Addr: network + "/" + service} if len(lines) == 0 { return 0, unknownPortError } f := getFields(lines[0]) if len(f) < 2 { return 0, unknownPortError } s := f[1] if i := bytealg.IndexByteString(s, '!'); i >= 0 { s = s[i+1:] // remove address } if n, _, ok := dtoi(s); ok { return n, nil } return 0, unknownPortError } func (*Resolver) lookupCNAME(ctx context.Context, name string) (cname string, err error) { lines, err := queryDNS(ctx, name, "cname") if err != nil { if stringsHasSuffix(err.Error(), "dns failure") || stringsHasSuffix(err.Error(), "resource does not exist; negrcode 0") { cname = name + "." err = nil } return } if len(lines) > 0 { if f := getFields(lines[0]); len(f) >= 3 { return f[2] + ".", nil } } return "", errors.New("bad response from ndb/dns") } func (*Resolver) lookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*SRV, err error) { var target string if service == "" && proto == "" { target = name } else { target = "_" + service + "._" + proto + "." + name } lines, err := queryDNS(ctx, target, "srv") if err != nil { return } for _, line := range lines { f := getFields(line) if len(f) < 6 { continue } port, _, portOk := dtoi(f[4]) priority, _, priorityOk := dtoi(f[3]) weight, _, weightOk := dtoi(f[2]) if !(portOk && priorityOk && weightOk) { continue } addrs = append(addrs, &SRV{absDomainName([]byte(f[5])), uint16(port), uint16(priority), uint16(weight)}) cname = absDomainName([]byte(f[0])) } byPriorityWeight(addrs).sort() return } func (*Resolver) lookupMX(ctx context.Context, name string) (mx []*MX, err error) { lines, err := queryDNS(ctx, name, "mx") if err != nil { return } for _, line := range lines { f := getFields(line) if len(f) < 4 { continue } if pref, _, ok := dtoi(f[2]); ok { mx = append(mx, &MX{absDomainName([]byte(f[3])), uint16(pref)}) } } byPref(mx).sort() return } func (*Resolver) lookupNS(ctx context.Context, name string) (ns []*NS, err error) { lines, err := queryDNS(ctx, name, "ns") if err != nil { return } for _, line := range lines { f := getFields(line) if len(f) < 3 { continue } ns = append(ns, &NS{absDomainName([]byte(f[2]))}) } return } func (*Resolver) lookupTXT(ctx context.Context, name string) (txt []string, err error) { lines, err := queryDNS(ctx, name, "txt") if err != nil { return } for _, line := range lines { if i := bytealg.IndexByteString(line, '\t'); i >= 0 { txt = append(txt, line[i+1:]) } } return } func (*Resolver) lookupAddr(ctx context.Context, addr string) (name []string, err error) { arpa, err := reverseaddr(addr) if err != nil { return } lines, err := queryDNS(ctx, arpa, "ptr") if err != nil { return } for _, line := range lines { f := getFields(line) if len(f) < 3 { continue } name = append(name, absDomainName([]byte(f[2]))) } return } // concurrentThreadsLimit returns the number of threads we permit to // run concurrently doing DNS lookups. func concurrentThreadsLimit() int { return 500 }
Upload File
Create Folder