const PortForwardProtocolV1Name … var ErrLostConnectionToPod … type PortForwarder … type ForwardedPort … /* valid port specifications: 5000 - forwards from localhost:5000 to pod:5000 8888:5000 - forwards from localhost:8888 to pod:5000 0:5000 :5000 - selects a random available local port, forwards from localhost:<random port> to pod:5000 */ func parsePorts(ports []string) ([]ForwardedPort, error) { … } type listenAddress … func parseAddresses(addressesToParse []string) ([]listenAddress, error) { … } // New creates a new PortForwarder with localhost listen addresses. func New(dialer httpstream.Dialer, ports []string, stopChan <-chan struct{ … } // NewOnAddresses creates a new PortForwarder with custom listen addresses. func NewOnAddresses(dialer httpstream.Dialer, addresses []string, ports []string, stopChan <-chan struct{ … } // ForwardPorts formats and executes a port forwarding request. The connection will remain // open until stopChan is closed. func (pf *PortForwarder) ForwardPorts() error { … } // forward dials the remote host specific in req, upgrades the request, starts // listeners for each port specified in ports, and forwards local connections // to the remote host via streams. func (pf *PortForwarder) forward() error { … } // listenOnPort delegates listener creation and waits for connections on requested bind addresses. // An error is raised based on address groups (default and localhost) and their failure modes func (pf *PortForwarder) listenOnPort(port *ForwardedPort) error { … } // listenOnPortAndAddress delegates listener creation and waits for new connections // in the background f func (pf *PortForwarder) listenOnPortAndAddress(port *ForwardedPort, protocol string, address string) error { … } // getListener creates a listener on the interface targeted by the given hostname on the given port with // the given protocol. protocol is in net.Listen style which basically admits values like tcp, tcp4, tcp6 func (pf *PortForwarder) getListener(protocol string, hostname string, port *ForwardedPort) (net.Listener, error) { … } // waitForConnection waits for new connections to listener and handles them in // the background. func (pf *PortForwarder) waitForConnection(listener net.Listener, port ForwardedPort) { … } func (pf *PortForwarder) nextRequestID() int { … } // handleConnection copies data between the local connection and the stream to // the remote server. func (pf *PortForwarder) handleConnection(conn net.Conn, port ForwardedPort) { … } // Close stops all listeners of PortForwarder. func (pf *PortForwarder) Close() { … } // GetPorts will return the ports that were forwarded; this can be used to // retrieve the locally-bound port in cases where the input was port 0. This // function will signal an error if the Ready channel is nil or if the // listeners are not ready yet; this function will succeed after the Ready // channel has been closed. func (pf *PortForwarder) GetPorts() ([]ForwardedPort, error) { … }