convertDockerPort converts a Docker port string to a port number and network example: "8080/tcp" -> 8080, "tcp" "8080" -> 8080, "tcp"
(in string)
| 503 | // |
| 504 | // "8080" -> 8080, "tcp" |
| 505 | func convertDockerPort(in string) (uint16, string, error) { |
| 506 | parts := strings.Split(in, "/") |
| 507 | p, err := strconv.ParseUint(parts[0], 10, 16) |
| 508 | if err != nil { |
| 509 | return 0, "", xerrors.Errorf("invalid port format: %s", in) |
| 510 | } |
| 511 | switch len(parts) { |
| 512 | case 1: |
| 513 | // assume it's a TCP port |
| 514 | return uint16(p), "tcp", nil |
| 515 | case 2: |
| 516 | return uint16(p), parts[1], nil |
| 517 | default: |
| 518 | return 0, "", xerrors.Errorf("invalid port format: %s", in) |
| 519 | } |
| 520 | } |
| 521 | |
| 522 | // convenience function to check if an IP address is loopback or unspecified |
| 523 | func isLoopbackOrUnspecified(ips string) bool { |