OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [net/] [iprawsock.go] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// 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.
4
 
5
// (Raw) IP sockets
6
 
7
package net
8
 
9
// IPAddr represents the address of a IP end point.
10
type IPAddr struct {
11
        IP IP
12
}
13
 
14
// Network returns the address's network name, "ip".
15
func (a *IPAddr) Network() string { return "ip" }
16
 
17
func (a *IPAddr) String() string {
18
        if a == nil {
19
                return ""
20
        }
21
        return a.IP.String()
22
}
23
 
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)
30
        if err != nil {
31
                return nil, err
32
        }
33
        return &IPAddr{ip}, nil
34
}
35
 
36
// Convert "host" into IP address.
37
func hostToIP(net, host string) (ip IP, err error) {
38
        var addr IP
39
        // Try as an IP address.
40
        addr = ParseIP(host)
41
        if addr == nil {
42
                filter := anyaddr
43
                if net != "" && net[len(net)-1] == '4' {
44
                        filter = ipv4only
45
                }
46
                if net != "" && net[len(net)-1] == '6' {
47
                        filter = ipv6only
48
                }
49
                // Not an IP address.  Try as a DNS name.
50
                addrs, err1 := LookupHost(host)
51
                if err1 != nil {
52
                        err = err1
53
                        goto Error
54
                }
55
                addr = firstFavoriteAddr(filter, addrs)
56
                if addr == nil {
57
                        // should not happen
58
                        err = &AddrError{"LookupHost returned no suitable address", addrs[0]}
59
                        goto Error
60
                }
61
        }
62
        return addr, nil
63
Error:
64
        return nil, err
65
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.