code: func (d *Data) HostPort(addr string) error {
  	ip, port, err := net.SplitHostPort(addr)
  	if err != nil {
  		return err
  	}
  	p, err := strconv.ParseUint(port, 10, 32)
  	if err != nil {
  		return err
  	}
  	d.Port = uint32(p)
  
  	if ip := net.ParseIP(ip); ip != nil {
  		d.Address = []byte(ip)
  		if ip := ip.To4(); ip != nil {
  			d.SocketFam = tap.SocketFamily_INET
  		} else {
  			d.SocketFam = tap.SocketFamily_INET6
  		}
  		return nil
  	}
  	return errors.New("not an ip address")
  }
docs: // HostPort decodes into Data any string returned by dnsutil.ParseHostPortOrFile.