1 // Copyright 2010 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.
9 // IPAddr represents the address of a IP end point.
14 // Network returns the address's network name, "ip".
15 func (a *IPAddr) Network() string { return "ip" }
17 func (a *IPAddr) String() string {
24 // ResolveIPAddr parses addr as a IP address and resolves domain
25 // names to numeric addresses on the network net, which must be
26 // "ip", "ip4" or "ip6". A literal IPv6 host address must be
27 // enclosed in square brackets, as in "[::]".
28 func ResolveIPAddr(net, addr string) (*IPAddr, error) {
29 ip, err := hostToIP(net, addr)
33 return &IPAddr{ip}, nil
36 // Convert "host" into IP address.
37 func hostToIP(net, host string) (ip IP, err error) {
39 // Try as an IP address.
43 if net != "" && net[len(net)-1] == '4' {
46 if net != "" && net[len(net)-1] == '6' {
49 // Not an IP address. Try as a DNS name.
50 addrs, err1 := LookupHost(host)
55 addr = firstFavoriteAddr(filter, addrs)
58 err = &AddrError{"LookupHost returned no suitable address", addrs[0]}