Documentation ¶
Index ¶
- Constants
- Variables
- func FreeBytes(b []byte)
- func Input(pkt []byte) (int, error)
- func NewBytes(size int) []byte
- func NewLWIPError(code int) error
- func ParseTCPAddr(addr string, port uint16) net.Addr
- func ParseUDPAddr(addr string, port uint16) net.Addr
- func RegisterOutputFn(fn func([]byte) (int, error))
- func RegisterTCPConnHandler(h TCPConnHandler)
- func RegisterUDPConnHandler(h UDPConnHandler)
- func SetBufferPool(p *sync.Pool)
- type LWIPStack
- type TCPConn
- type TCPConnHandler
- type UDPConn
- type UDPConnHandler
Constants ¶
View Source
const ( LWIP_ERR_OK int = iota LWIP_ERR_ABRT LWIP_ERR_CONN )
View Source
const BufSize = 2 * 1024
View Source
const CHECK_TIMEOUTS_INTERVAL = 250 // in millisecond
View Source
const TCP_POLL_INTERVAL = 8 // poll every 4 seconds
Variables ¶
View Source
var OutputFn func([]byte) (int, error)
Functions ¶
func NewLWIPError ¶
func RegisterOutputFn ¶
func RegisterTCPConnHandler ¶ added in v1.12.0
func RegisterTCPConnHandler(h TCPConnHandler)
func RegisterUDPConnHandler ¶ added in v1.12.0
func RegisterUDPConnHandler(h UDPConnHandler)
func SetBufferPool ¶
Types ¶
type LWIPStack ¶
func NewLWIPStack ¶
func NewLWIPStack() LWIPStack
NewLWIPStack listens for any incoming connections/packets and registers corresponding accept/recv callback functions.
type TCPConn ¶ added in v1.12.0
type TCPConn interface { // RemoteAddr returns the destination network address. RemoteAddr() net.Addr // LocalAddr returns the local client network address. LocalAddr() net.Addr // Receive receives data from TUN. Receive(data []byte) error // Read reads data comming from TUN, note that it reads from an // underlying pipe that the writer writes in the lwip thread, // write op blocks until previous written data is consumed, one // should read out all data as soon as possible. Read(data []byte) (int, error) // Write writes data to TUN. Write(data []byte) (int, error) // Sent will be called when sent data has been acknowledged by clients. Sent(len uint16) error // Close closes the connection. Close() error // Abort aborts the connection to client by sending a RST segment. Abort() // Err will be called when a fatal error has occurred on the connection. Err(err error) // LocalDidClose will be called when local client has close the connection. LocalDidClose() error // Poll will be periodically called by timers. Poll() error SetDeadline(t time.Time) error SetReadDeadline(t time.Time) error SetWriteDeadline(t time.Time) error }
TCPConn abstracts a TCP connection comming from TUN. This connection should be handled by a registered TCP proxy handler.
type TCPConnHandler ¶ added in v1.12.0
type TCPConnHandler interface { // Handle handles the conn for target. Handle(conn net.Conn, target net.Addr) error }
TCPConnHandler handles TCP connections comming from TUN.
type UDPConn ¶ added in v1.12.0
type UDPConn interface { // LocalAddr returns the local client network address. LocalAddr() net.Addr // ReceiveTo receives data from TUN, and the received data should be sent to addr. ReceiveTo(data []byte, addr net.Addr) error // WriteFrom writes data to TUN, which was received from addr. addr will be set as // source address of IP packets that output to TUN. WriteFrom(data []byte, addr net.Addr) (int, error) // Close closes the connection. Close() error }
TCPConn abstracts a UDP connection comming from TUN. This connection should be handled by a registered UDP proxy handler.
type UDPConnHandler ¶ added in v1.12.0
type UDPConnHandler interface { // Connect connects the proxy server. `target` can be nil. Connect(conn UDPConn, target net.Addr) error // DidReceive will be called when data arrives from TUN. DidReceiveTo(conn UDPConn, data []byte, addr net.Addr) error }
UDPConnHandler handles UDP connections comming from TUN.
Source Files ¶
Click to show internal directories.
Click to hide internal directories.