Files
Xray-core/proxy/tun/tun.go
T

27 lines
1.0 KiB
Go

package tun
// packetRoom is what a tun may need in front of a packet in the buffer that it is read into
const packetRoom = 16
// Tun interface implements tun interface interaction
type Tun interface {
Start() error
Close() error
Name() (string, error)
Index() (int, error)
// ReadPacket waits for a packet, reads it into b and returns it
ReadPacket(b []byte) ([]byte, error)
// WritePacket writes a packet that is in two parts, the second of which may be empty
WritePacket(header, payload []byte) error
}
// segmenter is a tun whose other side takes TCP segments that are larger than the MTU,
// splits them only if it has to send them on, and completes their checksum then
type segmenter interface {
// Segments reports whether WriteSegment can be used
Segments() bool
// WriteSegment writes a packet with a TCP segment whose payload is in parts, to be sent on with mss bytes
// of it at most in one. Its checksum is that of the pseudo-header only, not inverted
WriteSegment(header []byte, payload [][]byte, mss int) error
}