tun

package
v0.3.1-beta.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2022 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MaxMsgsPerRecv is the maximum number of packets we want to retrieve
	// in a single RecvMMsg call.
	MaxMsgsPerRecv = 8
)

Variables

View Source
var BufConfig = []int{128, 256, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}

BufConfig defines the shape of the buffer used to read packets from the NIC.

View Source
var MaxSegmentSize = (1 << 16) - 1

Functions

func NewTun

func NewTun(opt *TunOpt) (*tunServer, error)

Types

type Endpoint

type Endpoint struct {
	LinkEPCapabilities stack.LinkEndpointCapabilities
	// contains filtered or unexported fields
}

Endpoint is link layer endpoint that stores outbound packets in a channel and allows injection of inbound packets.

func NewEndpoint

func NewEndpoint(w writer, mtu uint32, linkAddr tcpip.LinkAddress) *Endpoint

New creates a new channel endpoint.

func (*Endpoint) ARPHardwareType

func (*Endpoint) ARPHardwareType() header.ARPHardwareType

ARPHardwareType implements stack.LinkEndpoint.ARPHardwareType.

func (*Endpoint) AddHeader

func (*Endpoint) AddHeader(*stack.PacketBuffer)

AddHeader implements stack.LinkEndpoint.AddHeader.

func (*Endpoint) Attach

func (e *Endpoint) Attach(dispatcher stack.NetworkDispatcher)

Attach saves the stack network-layer dispatcher for use later when packets are injected.

func (*Endpoint) Capabilities

func (e *Endpoint) Capabilities() stack.LinkEndpointCapabilities

Capabilities implements stack.LinkEndpoint.Capabilities.

func (*Endpoint) Close

func (e *Endpoint) Close()

Close closes e. Further packet injections will return an error, and all pending packets are discarded. Close may be called concurrently with WritePackets.

func (*Endpoint) InjectInbound

func (e *Endpoint) InjectInbound(protocol tcpip.NetworkProtocolNumber, pkt *stack.PacketBuffer)

InjectInbound injects an inbound packet.

func (*Endpoint) InjectOutbound

func (e *Endpoint) InjectOutbound(dest tcpip.Address, packet []byte) tcpip.Error

InjectOutbound writes a fully formed outbound packet directly to the link.

dest is used by endpoints with multiple raw destinations.

func (*Endpoint) IsAttached

func (e *Endpoint) IsAttached() bool

IsAttached implements stack.LinkEndpoint.IsAttached.

func (*Endpoint) LinkAddress

func (e *Endpoint) LinkAddress() tcpip.LinkAddress

LinkAddress returns the link address of this endpoint.

func (*Endpoint) MTU

func (e *Endpoint) MTU() uint32

MTU implements stack.LinkEndpoint.MTU. It returns the value initialized during construction.

func (*Endpoint) MaxHeaderLength

func (*Endpoint) MaxHeaderLength() uint16

MaxHeaderLength returns the maximum size of the link layer header. Given it doesn't have a header, it just returns 0.

func (*Endpoint) SetInbound

func (e *Endpoint) SetInbound(i inbound)

func (*Endpoint) Wait

func (e *Endpoint) Wait()

Wait implements stack.LinkEndpoint.Wait.

func (*Endpoint) WritePackets

func (e *Endpoint) WritePackets(pkts stack.PacketBufferList) (int, tcpip.Error)

WritePackets stores outbound packets into the channel. Multiple concurrent calls are permitted.

type TunOpt

type TunOpt struct {
	Name           string
	Gateway        string
	MTU            int
	DNSHijacking   bool
	SkipMulticast  bool
	EndpointDriver config.TunEndpointDriver
	DNS            server.DNSServer
	Dialer         proxy.Proxy

	// only for android
	UidDumper config.UidDumper
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL