capture

package
v0.0.0-...-adca071 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2024 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PacketPrinterHandler = PacketHandlerFunc(func(p gopacket.Packet) error {
	fmt.Println(p)
	return nil
})

Functions

func NewLiveHandle

func NewLiveHandle(iface string, netns string, filter string, snaplen int, promisc bool, bufferSize int) (*pcap.Handle, error)

Types

type BasicCapture

type BasicCapture struct {
	// contains filtered or unexported fields
}

func NewBasic

func NewBasic(ctx context.Context, log *slog.Logger, ifaceName string, netns string, conf Config) (*BasicCapture, error)

func NewContainer

func NewContainer(ctx context.Context, log *slog.Logger, ifaceName string, pod *containerdutil.Pod, conf Config) (*BasicCapture, error)

func (*BasicCapture) Close

func (c *BasicCapture) Close()

func (*BasicCapture) Interface

func (c *BasicCapture) Interface() CaptureInterface

func (*BasicCapture) LinkType

func (c *BasicCapture) LinkType() layers.LinkType

func (*BasicCapture) Start

func (c *BasicCapture) Start(ctx context.Context, handler PacketHandler) error

type CapperPacketWrapper

type CapperPacketWrapper struct {
	*capperpb.Packet
}

func (*CapperPacketWrapper) Timestamp

func (p *CapperPacketWrapper) Timestamp() time.Time

type Capture

type Capture interface {
	LinkType() layers.LinkType
	Start(ctx context.Context, handler PacketHandler) error
	Close()
}

type CaptureInterface

type CaptureInterface struct {
	Name            string
	Index           int
	Hostname        string
	NetnsInode      uint64
	Netns           string
	LinkType        layers.LinkType
	K8sPod          string
	K8sPodNamespace string
}

type ChainPacketHandler

type ChainPacketHandler struct {
	// contains filtered or unexported fields
}

func (*ChainPacketHandler) Flush

func (chain *ChainPacketHandler) Flush() error

func (*ChainPacketHandler) HandlePacket

func (chain *ChainPacketHandler) HandlePacket(p gopacket.Packet) error

type Config

type Config struct {
	Filter          string
	Snaplen         int
	Promisc         bool
	NumPackets      uint64
	CaptureDuration time.Duration
	BufferSize      int
	OutputFormat    capperpb.PcapOutputFormat
}

type GoPacketWrapper

type GoPacketWrapper struct {
	gopacket.Packet
}

func (*GoPacketWrapper) Timestamp

func (p *GoPacketWrapper) Timestamp() time.Time

type NamedPacketSource

type NamedPacketSource struct {
	Name string
	PacketSource
}

type PacketHandler

type PacketHandler interface {
	HandlePacket(gopacket.Packet) error
	Flush() error
}

func ChainPacketHandlers

func ChainPacketHandlers(handlers ...PacketHandler) PacketHandler

type PacketHandlerFunc

type PacketHandlerFunc func(gopacket.Packet) error

func (PacketHandlerFunc) Flush

func (f PacketHandlerFunc) Flush() error

func (PacketHandlerFunc) HandlePacket

func (f PacketHandlerFunc) HandlePacket(p gopacket.Packet) error

type PacketHeap

type PacketHeap []TimestampedPacket

PacketHeap implements heap.Interface

func (PacketHeap) Len

func (h PacketHeap) Len() int

func (PacketHeap) Less

func (h PacketHeap) Less(i, j int) bool

func (*PacketHeap) Pop

func (h *PacketHeap) Pop() interface{}

func (*PacketHeap) Push

func (h *PacketHeap) Push(x interface{})

func (PacketHeap) Swap

func (h PacketHeap) Swap(i, j int)

type PacketMerger

type PacketMerger struct {
	// contains filtered or unexported fields
}

PacketMerger takes multiple PacketSources and combines them

func NewPacketMerger

func NewPacketMerger(log *slog.Logger, sources []NamedPacketSource, heapDrainThreshold int, flushInterval time.Duration, mergeBufferSize int, outputBufferSize int) *PacketMerger

func (*PacketMerger) AddSource

func (pm *PacketMerger) AddSource(src NamedPacketSource)

func (*PacketMerger) PacketsCtx

func (pm *PacketMerger) PacketsCtx(ctx context.Context) chan TimestampedPacket

type PacketSource

type PacketSource interface {
	PacketsCtx(ctx context.Context) chan TimestampedPacket
}

type PacketSourceChan

type PacketSourceChan chan TimestampedPacket

func (PacketSourceChan) PacketsCtx

func (ps PacketSourceChan) PacketsCtx(ctx context.Context) chan TimestampedPacket

type PacketWriter

type PacketWriter interface {
	WritePacket(ci gopacket.CaptureInfo, data []byte) error
	Flush() error
}

type PcapNgWriter

type PcapNgWriter struct {
	// contains filtered or unexported fields
}

func NewPcapNgWriter

func NewPcapNgWriter(w io.Writer, iface CaptureInterface, snaplen uint32, hardware, os string) (*PcapNgWriter, error)

func (*PcapNgWriter) AddInterface

func (w *PcapNgWriter) AddInterface(iface CaptureInterface) (int, error)

func (*PcapNgWriter) Flush

func (w *PcapNgWriter) Flush() error

func (*PcapNgWriter) WritePacket

func (w *PcapNgWriter) WritePacket(ci gopacket.CaptureInfo, data []byte) error

type PcapWriter

type PcapWriter struct {
	// contains filtered or unexported fields
}

func NewPcapWriter

func NewPcapWriter(w io.Writer, linkType layers.LinkType, snaplen uint32) *PcapWriter

func (*PcapWriter) Flush

func (w *PcapWriter) Flush() error

func (*PcapWriter) WritePacket

func (w *PcapWriter) WritePacket(ci gopacket.CaptureInfo, data []byte) error

type TimestampedPacket

type TimestampedPacket interface {
	Timestamp() time.Time
}

Jump to

Keyboard shortcuts

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