io

package
v0.2.2-b Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 License: MPL-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ErrInvalidPacket

type ErrInvalidPacket struct {
	Err error
}

func (*ErrInvalidPacket) Error

func (e *ErrInvalidPacket) Error() string

type NFQueuePacketIOConfig

type NFQueuePacketIOConfig struct {
	QueueSize uint32
	Local     bool
}

type Packet

type Packet interface {
	// StreamID is the ID of the stream the packet belongs to.
	StreamID() uint32
	// Data is the raw packet data, starting with the IP header.
	Data() []byte
}

Packet represents an IP packet.

type PacketCallback

type PacketCallback func(Packet, error) bool

PacketCallback is called for each packet received. Return false to "unregister" and stop receiving packets. It must be safe for concurrent use.

type PacketIO

type PacketIO interface {
	// Register registers a callback to be called for each packet received.
	// The callback should be called in one or more separate goroutines,
	// and stop when the context is cancelled.
	Register(context.Context, PacketCallback) error
	// SetVerdict sets the verdict for a packet.
	SetVerdict(Packet, Verdict, []byte) error
	// Close closes the packet IO.
	Close() error
}

func NewNFQueuePacketIO

func NewNFQueuePacketIO(config NFQueuePacketIOConfig) (PacketIO, error)

type Verdict

type Verdict int
const (
	// VerdictAccept accepts the packet, but continues to process the stream.
	VerdictAccept Verdict = iota
	// VerdictAcceptModify is like VerdictAccept, but replaces the packet with a new one.
	VerdictAcceptModify
	// VerdictAcceptStream accepts the packet and stops processing the stream.
	VerdictAcceptStream
	// VerdictDrop drops the packet, but does not block the stream.
	VerdictDrop
	// VerdictDropStream drops the packet and blocks the stream.
	VerdictDropStream
)

Jump to

Keyboard shortcuts

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