github.com/jfrazelle/docker@v1.1.2-0.20210712172922-bf78e25fe508/libnetwork/portallocator/portallocator_linux.go (about) 1 package portallocator 2 3 import ( 4 "bufio" 5 "fmt" 6 "os" 7 ) 8 9 func getDynamicPortRange() (start int, end int, err error) { 10 const portRangeKernelParam = "/proc/sys/net/ipv4/ip_local_port_range" 11 file, err := os.Open(portRangeKernelParam) 12 if err != nil { 13 return 0, 0, err 14 } 15 defer file.Close() 16 17 n, err := fmt.Fscanf(bufio.NewReader(file), "%d\t%d", &start, &end) 18 if n != 2 || err != nil { 19 if err == nil { 20 err = fmt.Errorf("unexpected count of parsed numbers (%d)", n) 21 } 22 return 0, 0, fmt.Errorf("port allocator - failed to parse system ephemeral port range from %s: %v", portRangeKernelParam, err) 23 } 24 return start, end, nil 25 }