Documentation ¶
Overview ¶
Package socket provides a portable interface for socket system calls.
Index ¶
- Variables
- func ControlMessageSpace(dataLen int) int
- type Conn
- type ControlMessage
- func (m ControlMessage) Data(dataLen int) []byte
- func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error)
- func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error
- func (m ControlMessage) Next(dataLen int) ControlMessage
- func (m ControlMessage) Parse() ([]ControlMessage, error)
- func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error)
- type Message
- type Option
Constants ¶
This section is empty.
Variables ¶
var ( // NativeEndian is the machine native endian implementation of // ByteOrder. NativeEndian binary.ByteOrder )
Functions ¶
func ControlMessageSpace ¶
ControlMessageSpace returns the whole length of control message.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
A Conn represents a raw connection.
func (*Conn) RecvMsg ¶
RecvMsg wraps recvmsg system call.
The provided flags is a set of platform-dependent flags, such as syscall.MSG_PEEK.
func (*Conn) RecvMsgs ¶
RecvMsgs wraps recvmmsg system call.
It returns the number of processed messages.
The provided flags is a set of platform-dependent flags, such as syscall.MSG_PEEK.
Only Linux supports this.
type ControlMessage ¶
type ControlMessage []byte
A ControlMessage represents the head message in a stream of control messages.
A control message comprises of a header, data and a few padding fields to conform to the interface to the kernel.
See RFC 3542 for further information.
func NewControlMessage ¶
func NewControlMessage(dataLen []int) ControlMessage
NewControlMessage returns a new stream of control messages.
func (ControlMessage) Data ¶
func (m ControlMessage) Data(dataLen int) []byte
Data returns the data field of the control message at the head on m.
func (ControlMessage) Marshal ¶
func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error)
Marshal marshals the control message at the head on m, and returns the next control message.
func (ControlMessage) MarshalHeader ¶
func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error
MarshalHeader marshals the header fields of the control message at the head on m.
func (ControlMessage) Next ¶
func (m ControlMessage) Next(dataLen int) ControlMessage
Next returns the control message at the next on m.
Next works only for standard control messages.
func (ControlMessage) Parse ¶
func (m ControlMessage) Parse() ([]ControlMessage, error)
Parse parses m as a single or multiple control messages.
Parse works for both standard and compatible messages.
func (ControlMessage) ParseHeader ¶
func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error)
ParseHeader parses and returns the header fields of the control message at the head on m.
type Message ¶
type Message struct { // When writing, the Buffers field must contain at least one // byte to write. // When reading, the Buffers field will always contain a byte // to read. Buffers [][]byte // OOB contains protocol-specific control or miscellaneous // ancillary data known as out-of-band data. OOB []byte // Addr specifies a destination address when writing. // It can be nil when the underlying protocol of the raw // connection uses connection-oriented communication. // After a successful read, it may contain the source address // on the received packet. Addr net.Addr N int // # of bytes read or written from/to Buffers NN int // # of bytes read or written from/to OOB Flags int // protocol-specific information on the received message }
A Message represents an IO message.
type Option ¶
type Option struct { Level int // level Name int // name; must be equal or greater than 1 Len int // length of value in bytes; must be equal or greater than 1 }
An Option represents a sticky socket option.
func (*Option) Get ¶
Get reads a value for the option from the kernel. It returns the number of bytes written into b.
func (*Option) GetInt ¶
GetInt returns an integer value for the option.
The Len field of Option must be either 1 or 4.