code: func ParseAddr(a string) (*NetAddr, error) {
  	if a == "" {
  		return nil, trace.BadParameter("missing parameter address")
  	}
  	if !strings.Contains(a, "://") {
  		return &NetAddr{Addr: a, AddrNetwork: "tcp"}, nil
  	}
  	u, err := url.Parse(a)
  	if err != nil {
  		return nil, trace.BadParameter("failed to parse %q: %v", a, err)
  	}
  	switch u.Scheme {
  	case "tcp":
  		return &NetAddr{Addr: u.Host, AddrNetwork: u.Scheme, Path: u.Path}, nil
  	case "unix":
  		return &NetAddr{Addr: u.Path, AddrNetwork: u.Scheme}, nil
  	case "http", "https":
  		return &NetAddr{Addr: u.Host, AddrNetwork: u.Scheme, Path: u.Path}, nil
  	default:
  		return nil, trace.BadParameter("'%v': unsupported scheme: '%v'", a, u.Scheme)
  	}
  }
docs: // ParseAddr takes strings like "tcp://host:port/path" and returns
  // *NetAddr or an error