12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package net
- type IPAddr struct {
- IP IP
- Zone string
- }
- func (a *IPAddr) Network() string { return "ip" }
- func (a *IPAddr) String() string {
- if a == nil {
- return "<nil>"
- }
- if a.Zone != "" {
- return a.IP.String() + "%" + a.Zone
- }
- return a.IP.String()
- }
- func (a *IPAddr) toAddr() Addr {
- if a == nil {
- return nil
- }
- return a
- }
- func ResolveIPAddr(net, addr string) (*IPAddr, error) {
- if net == "" {
- net = "ip"
- }
- afnet, _, err := parseNetwork(net)
- if err != nil {
- return nil, err
- }
- switch afnet {
- case "ip", "ip4", "ip6":
- default:
- return nil, UnknownNetworkError(net)
- }
- a, err := resolveInternetAddr(afnet, addr, noDeadline)
- if err != nil {
- return nil, err
- }
- return a.toAddr().(*IPAddr), nil
- }
|