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

import (
	"github.com/docker/go-connections/nat"
	"github.com/pkg/errors"
)

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 errors.Wrapf(err, "invalid range format for --expose: %s", expose)
		}
	}
	return nil
}