Documentation ¶
Overview ¶
The network/lwip2transport package translates between IP packets and TCP/UDP protocols. It uses a modified lwIP go library, which is based on the original lwIP library (A Lightweight TCP/IP stack). The device is singleton, so only one instance can be created per process.
To configure the instance with TCP/UDP handlers:
// tcpHandler will be used to handle TCP streams, and udpHandler to handle UDP packets t2s, err := lwip2transport.ConfigureDevice(tcpHandler, udpHandler) if err != nil { // handle error }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConfigureDevice ¶
func ConfigureDevice(sd transport.StreamDialer, pp network.PacketProxy) (network.IPDevice, error)
ConfigureDevice configures the singleton LwIP device using the transport.StreamDialer to handle TCP streams and the transport.PacketProxy to handle UDP packets.
LwIP device is a network.IPDevice that can translate IP packets to TCP/UDP traffic and vice versa. It uses the lwIP library to perform the translation.
LwIP device must be a singleton object due to limitations in lwIP library. If you try to call ConfigureDevice more than once, we will Close the previous device and reconfigure it.
To use a LwIP device:
- Call ConfigureDevice with two handlers for TCP and UDP traffic.
- Write IP packets to the device. The device will translate the IP packets to TCP/UDP traffic and send them to the appropriate handlers.
- Read IP packets from the device to get the TCP/UDP responses.
A LwIP device is NOT thread-safe. However it is safe to use Write, Read/WriteTo and Close in different goroutines. Keep in mind that only one goroutine can call Write at a time, and only one goroutine can use either Read or WriteTo at a time.
Types ¶
This section is empty.