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 Packet ¶
type Packet interface { // StreamID is the ID of the stream the packet belongs to. StreamID() uint32 // Timestamp is the time the packet was received. Timestamp() time.Time // Data is the raw packet data, starting with the IP header. Data() []byte }
Packet represents an IP packet.
type PacketCallback ¶
PacketCallback is called for each packet received. Return false to "unregister" and stop receiving packets.
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 // ProtectedDialContext is like net.DialContext, but the connection is "protected" // in the sense that the packets sent/received through the connection must bypass // the packet IO and not be processed by the callback. ProtectedDialContext(ctx context.Context, network, address string) (net.Conn, error) // Close closes the packet IO. Close() error // SetCancelFunc gives packet IO access to context cancel function, enabling it to // trigger a shutdown SetCancelFunc(cancelFunc context.CancelFunc) error }
func NewNFQueuePacketIO ¶
func NewNFQueuePacketIO(config NFQueuePacketIOConfig) (PacketIO, error)
func NewPcapPacketIO ¶ added in v0.4.0
func NewPcapPacketIO(config PcapPacketIOConfig) (PacketIO, error)
type PcapPacketIOConfig ¶ added in v0.4.0
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 )
Click to show internal directories.
Click to hide internal directories.