2016-05-20 16:23:53 -04:00
|
|
|
package portallocator
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bufio"
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
|
|
|
func getDynamicPortRange() (start int, end int, err error) {
|
|
|
|
const portRangeKernelParam = "/proc/sys/net/ipv4/ip_local_port_range"
|
|
|
|
file, err := os.Open(portRangeKernelParam)
|
|
|
|
if err != nil {
|
2020-09-24 05:09:34 -04:00
|
|
|
return 0, 0, err
|
2016-05-20 16:23:53 -04:00
|
|
|
}
|
|
|
|
defer file.Close()
|
|
|
|
|
|
|
|
n, err := fmt.Fscanf(bufio.NewReader(file), "%d\t%d", &start, &end)
|
|
|
|
if n != 2 || err != nil {
|
|
|
|
if err == nil {
|
|
|
|
err = fmt.Errorf("unexpected count of parsed numbers (%d)", n)
|
|
|
|
}
|
2020-09-24 05:09:34 -04:00
|
|
|
return 0, 0, fmt.Errorf("port allocator - failed to parse system ephemeral port range from %s: %v", portRangeKernelParam, err)
|
2016-05-20 16:23:53 -04:00
|
|
|
}
|
|
|
|
return start, end, nil
|
|
|
|
}
|