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.