summaryrefslogtreecommitdiff
path: root/pkg/specgenutil/ports.go
blob: 23ee9b4d3232a15365f6b47b6981a826a54f444d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package specgenutil

import (
	"fmt"

	"github.com/docker/go-connections/nat"
)

func verifyExpose(expose []string) error {
	// add the expose ports from the user (--expose)
	// can be single or a range
	for _, expose := range expose {
		// support two formats for expose, original format <portnum>/[<proto>] or <startport-endport>/[<proto>]
		_, port := nat.SplitProtoPort(expose)
		// parse the start and end port and create a sequence of ports to expose
		// if expose a port, the start and end port are the same
		_, _, err := nat.ParsePortRange(port)
		if err != nil {
			return fmt.Errorf("invalid range format for --expose: %s: %w", expose, err)
		}
	}
	return nil
}