code: func ParseDynamicPortForwardSpec(spec []string) (DynamicForwardedPorts, error) {
  	result := make(DynamicForwardedPorts, 0, len(spec))
  
  	for _, str := range spec {
  		host, port, err := net.SplitHostPort(str)
  		if err != nil {
  			return nil, trace.Wrap(err)
  		}
  
  		// If no host is provided, bind to localhost.
  		if host == "" {
  			host = defaults.Localhost
  		}
  
  		srcPort, err := strconv.Atoi(port)
  		if err != nil {
  			return nil, trace.Wrap(err)
  		}
  
  		result = append(result, DynamicForwardedPort{
  			SrcIP:   host,
  			SrcPort: srcPort,
  		})
  	}
  
  	return result, nil
  }
docs: // ParseDynamicPortForwardSpec parses the dynamic port forwarding spec
  // passed in the -D flag. The format of the dynamic port forwarding spec
  // is [bind_address:]port.