zsyscall

package
v0.0.0-alpha.16 Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2025 License: Apache-2.0 Imports: 4 Imported by: 1

Documentation

Index

Constants

View Source
const (
	SockOptSO uint = 1 << iota
	SockOptIP
	SockOptIPV6
	SockOptTCP
	SockOptUDP
)
View Source
const (
	SO_BINDTOIFINDEX = 0x3e
	SO_REUSEPORT     = 0xf
	SO_ZEROCOPY      = 0x3c

	IP_BIND_ADDRESS_NO_PORT = 0x18
	IP_LOCAL_PORT_RANGE     = 0x33

	TCP_FASTOPEN         = 0x17
	TCP_FASTOPEN_CONNECT = 0x1e
	TCP_USER_TIMEOUT     = 0x12

	UDP_CORK    = 0x1
	UDP_GRO     = 0x68
	UDP_SEGMENT = 0x67
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ControlFunc

type ControlFunc func(string, string, syscall.RawConn) error

ControlFunc is the function type that handle RawConn.

type Controller

type Controller func(fd uintptr) error

Controller is a function type that controls socket.

type SockIPOption

type SockIPOption struct {
	BindAddressNoPort   bool   // IP_BIND_ADDRESS_NO_PORT (since Linux 4.2)
	FreeBind            bool   // IP_FREEBIND (since Linux 2.4)
	LocalPortRangeUpper uint16 // IP_LOCAL_PORT_RANGE (since Linux 6.3)
	LocalPortRangeLower uint16 // IP_LOCAL_PORT_RANGE (since Linux 6.3)
	Transparent         bool   // IP_TRANSPARENT (since Linux 2.6.24)
	TTL                 int    // IP_TTL (since Linux 1.0)
}

SockIPOption is socket options for IPPROTO_IP level.

func (*SockIPOption) Controllers

func (c *SockIPOption) Controllers() []Controller

type SockIPV6Option

type SockIPV6Option struct {
	V6Only bool // IPV6_V6ONLY (since Linux 2.4.21 and 2.6)
}

SockIPV6Option is socket options for IPPROTO_IPV6 level.

func (*SockIPV6Option) Controllers

func (c *SockIPV6Option) Controllers() []Controller

type SockOption

type SockOption struct {
	SO   *SockSOOption
	IP   *SockIPOption
	IPV6 *SockIPV6Option
	TCP  *SockTCPOption
	UDP  *SockUDPOption
}

SockOption is aggregated socket options.

func (*SockOption) ControlFunc

func (o *SockOption) ControlFunc(opts uint) ControlFunc

ControlFunc returns a control function from options. Only specified options are enabled. For example, pass the SockOptSO and SockOptIP to enable both options as shown below.

ControlFunc(zsyscall.SockOptSO|zsyscall.SockOptIP)

type SockSOOption

type SockSOOption struct {
	BindToIFindex      int           // SO_BINDTOIFINDEX
	BindToDevice       string        // SO_BINDTODEVICE
	Debug              bool          // SO_DEBUG
	KeepAlive          bool          // SO_KEEPALIVE
	Linger             int32         // SO_LINGER
	Mark               int           // SO_MARK (since Linux 2.6.25)
	ReceiveBuffer      int           // SO_RCVBUF
	ReceiveBufferForce int           // SO_RCVBUFFORCE (since Linux 2.6.14)
	ReceiveTimeout     time.Duration // SO_RCVTIMEO
	SendTimeout        time.Duration // SO_SNDTIMEO
	ReuseAddr          bool          // SO_REUSEADDR
	ReusePort          bool          // SO_REUSEPORT (since Linux 3.9)
	SendBuffer         int           // SO_SNDBUF
	SendBufferForce    int           // SO_SNDBUFFORCE (since Linux 2.6.14)
}

SockSOOption is socket options for SOL_SOCKET level.

func (*SockSOOption) Controllers

func (c *SockSOOption) Controllers() []Controller

type SockTCPOption

type SockTCPOption struct {
	CORK            bool  // TCP_CORK (since Linux 2.2)
	DeferAccept     int   // TCP_DEFER_ACCEPT (since Linux 2.4)
	KeepCount       int   // TCP_KEEPCNT (since Linux 2.4)
	KeepIdle        int   // TCP_KEEPIDLE (since Linux 2.4)
	KeepInterval    int   // TCP_KEEPINTVL (since Linux 2.4)
	Linger2         int32 // TCP_LINGER2 (since Linux 2.4)
	MaxSegment      int   // TCP_MAXSEG
	NoDelay         bool  // TCP_NODELAY
	QuickAck        bool  // TCP_QUICKACK (since Linux 2.4.4)
	SynCount        int   // TCP_SYNCNT (since Linux 2.4)
	UserTimeout     int   // TCP_USER_TIMEOUT (since Linux 2.6.37)
	WindowClamp     int   // TCP_WINDOW_CLAMP (since Linux 2.4)
	FastOpen        bool  // TCP_FASTOPEN (since Linux 3.6)
	FastOpenConnect bool  // TCP_FASTOPEN_CONNECT (since Linux 4.11)
}

SockTCPOption is socket options for IPPROTO_TCP level.

func (*SockTCPOption) Controllers

func (c *SockTCPOption) Controllers() []Controller

type SockUDPOption

type SockUDPOption struct {
	CORK    bool // UDP_CORK (since Linux 2.5.44)
	Segment int  // UDP_SEGMENT (since Linux 4.18)
	GRO     bool // UDP_GRO (since Linux 5.0)
}

SockUDPOption is socket options for IPPROTO_UDP level.

func (*SockUDPOption) Controllers

func (c *SockUDPOption) Controllers() []Controller

type SocketError

type SocketError struct {
	Err  error
	Opts string
}

SocketError is an error type that tells an application of a socket option failed.

func (*SocketError) Error

func (e *SocketError) Error() string

func (*SocketError) Is

func (e *SocketError) Is(err error) bool

Jump to

Keyboard shortcuts

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