mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	- pkg/useragent - pkg/units - pkg/ulimit - pkg/truncindex - pkg/timeoutconn - pkg/term - pkg/tarsum - pkg/tailfile - pkg/systemd - pkg/stringutils - pkg/stringid - pkg/streamformatter - pkg/sockets - pkg/signal - pkg/proxy - pkg/progressreader - pkg/pools - pkg/plugins - pkg/pidfile - pkg/parsers - pkg/parsers/filters - pkg/parsers/kernel - pkg/parsers/operatingsystem Signed-off-by: Vincent Demeester <vincent@sbr.pm>
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package proxy provides a network Proxy interface and implementations for TCP
 | 
						|
// and UDP.
 | 
						|
package proxy
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"net"
 | 
						|
)
 | 
						|
 | 
						|
// Proxy defines the behavior of a proxy. It forwards traffic back and forth
 | 
						|
// between two endpoints : the frontend and the backend.
 | 
						|
// It can be used to do software port-mapping between two addresses.
 | 
						|
// e.g. forward all traffic between the frontend (host) 127.0.0.1:3000
 | 
						|
// to the backend (container) at 172.17.42.108:4000.
 | 
						|
type Proxy interface {
 | 
						|
	// Run starts forwarding traffic back and forth between the front
 | 
						|
	// and back-end addresses.
 | 
						|
	Run()
 | 
						|
	// Close stops forwarding traffic and close both ends of the Proxy.
 | 
						|
	Close()
 | 
						|
	// FrontendAddr returns the address on which the proxy is listening.
 | 
						|
	FrontendAddr() net.Addr
 | 
						|
	// BackendAddr returns the proxied address.
 | 
						|
	BackendAddr() net.Addr
 | 
						|
}
 | 
						|
 | 
						|
// NewProxy creates a Proxy according to the specified frontendAddr and backendAddr.
 | 
						|
func NewProxy(frontendAddr, backendAddr net.Addr) (Proxy, error) {
 | 
						|
	switch frontendAddr.(type) {
 | 
						|
	case *net.UDPAddr:
 | 
						|
		return NewUDPProxy(frontendAddr.(*net.UDPAddr), backendAddr.(*net.UDPAddr))
 | 
						|
	case *net.TCPAddr:
 | 
						|
		return NewTCPProxy(frontendAddr.(*net.TCPAddr), backendAddr.(*net.TCPAddr))
 | 
						|
	default:
 | 
						|
		panic(fmt.Errorf("Unsupported protocol"))
 | 
						|
	}
 | 
						|
}
 |