From 0dcc970432677ddd13d8ed583de84ae075888228 Mon Sep 17 00:00:00 2001 From: Michal Minar Date: Tue, 10 Mar 2015 09:56:42 +0100 Subject: [PATCH] Restructured port range loader And renamed `GetPortRange` to `PortRange`. Signed-off-by: Michal Minar --- .../portallocator/portallocator.go | 35 ++++++++++--------- .../networkdriver/portmapper/mapper_test.go | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/daemon/networkdriver/portallocator/portallocator.go b/daemon/networkdriver/portallocator/portallocator.go index 58d908615..17d8a2a29 100644 --- a/daemon/networkdriver/portallocator/portallocator.go +++ b/daemon/networkdriver/portallocator/portallocator.go @@ -71,23 +71,25 @@ func NewErrPortAlreadyAllocated(ip string, port int) ErrPortAlreadyAllocated { func init() { const param = "/proc/sys/net/ipv4/ip_local_port_range" - if line, err := ioutil.ReadFile(param); err != nil { + line, err := ioutil.ReadFile(param) + if err != nil { log.Errorf("Failed to read %s kernel parameter: %s", param, err.Error()) - } else { - var start, end int - if n, err := fmt.Fscanf(strings.NewReader(string(line)), "%d\t%d", &start, &end); n != 2 || err != nil { - if err == nil { - err = fmt.Errorf("unexpected count of parsed numbers (%d)", n) - } - log.Errorf("Failed to parse port range from %s: %v", param, err) - } else { - beginPortRange = start - endPortRange = end - } + return } + var start, end int + n, err := fmt.Fscanf(strings.NewReader(string(line)), "%d\t%d", &start, &end) + if n != 2 || err != nil { + if err == nil { + err = fmt.Errorf("unexpected count of parsed numbers (%d)", n) + } + log.Errorf("Failed to parse port range from %s: %v", param, err) + return + } + beginPortRange = start + endPortRange = end } -func GetPortRange() (int, int) { +func PortRange() (int, int) { return beginPortRange, endPortRange } @@ -169,11 +171,10 @@ func ReleaseAll() error { func (pm *portMap) findPort() (int, error) { port := pm.last - start, end := GetPortRange() - for i := 0; i <= end-start; i++ { + for i := 0; i <= endPortRange-beginPortRange; i++ { port++ - if port > end { - port = start + if port > endPortRange { + port = beginPortRange } if _, ok := pm.p[port]; !ok { diff --git a/daemon/networkdriver/portmapper/mapper_test.go b/daemon/networkdriver/portmapper/mapper_test.go index 1ace1e01b..fa7bdecdb 100644 --- a/daemon/networkdriver/portmapper/mapper_test.go +++ b/daemon/networkdriver/portmapper/mapper_test.go @@ -129,7 +129,7 @@ func TestMapAllPortsSingleInterface(t *testing.T) { }() for i := 0; i < 10; i++ { - start, end := portallocator.GetPortRange() + start, end := portallocator.PortRange() for i := start; i < end; i++ { if host, err = Map(srcAddr1, dstIp1, 0); err != nil { t.Fatal(err)