go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/connection/ssh/awsssmsession/available_port.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package awsssmsession
     5  
     6  import "net"
     7  
     8  // GetAvailablePort get an open port that is ready to use from the kernel
     9  func GetAvailablePort() (int, error) {
    10  	// get a new address
    11  	addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
    12  	if err != nil {
    13  		return 0, err
    14  	}
    15  
    16  	// try to listen on port
    17  	l, err := net.ListenTCP("tcp", addr)
    18  	if err != nil {
    19  		return 0, err
    20  	}
    21  	defer l.Close()
    22  	return l.Addr().(*net.TCPAddr).Port, nil
    23  }