Versions in this module Expand all Collapse all v0 v0.4.1 Mar 14, 2022 Changes in this version + var ErrIP = errors.New("invalid ip") + var ErrJSON = errors.New("invalid json") + var ErrPort = errors.New("invalid port") + var ErrPortRange = errors.New("invalid port range") + var ErrSubnet = errors.New("invalid subnet") + func MergeBufferDataChan(ctx context.Context, channels ...<-chan *packet.BufferData) <-chan *packet.BufferData + type Engine interface + Start func(ctx context.Context, r *Range) (done <-chan interface{}, errc <-chan error) + type EngineResulter interface + func NewEngineResulter(e Engine, r Resulter) EngineResulter + func SetupPacketEngine(rw packet.ReadWriter, m PacketMethod) EngineResulter + type GenericEngine struct + func NewScanEngine(reqgen RequestGenerator, scanner Scanner, results ResultChan, ...) *GenericEngine + func (e *GenericEngine) Results() <-chan Result + func (e *GenericEngine) Start(ctx context.Context, r *Range) (<-chan interface{}, <-chan error) + type GenericEngineOption func(s *GenericEngine) + func WithScanWorkerCount(workerCount int) GenericEngineOption + type IPContainer interface + Contains func(ip net.IP) (bool, error) + type IPGenerator interface + IPs func(ctx context.Context, r *Range) (<-chan IPGetter, error) + func NewFileIPGenerator(openFile OpenFileFunc) IPGenerator + func NewIPGenerator() IPGenerator + type IPGetter interface + GetIP func() (net.IP, error) + type IPPort struct + IP string + Port int + func (v *IPPort) UnmarshalEasyJSON(l *jlexer.Lexer) + func (v *IPPort) UnmarshalJSON(data []byte) error + func (v IPPort) MarshalEasyJSON(w *jwriter.Writer) + func (v IPPort) MarshalJSON() ([]byte, error) + type OpenFileFunc func() (io.ReadCloser, error) + type PacketEngine struct + func NewPacketEngine(ps PacketSource, s packet.Sender, r packet.Receiver) *PacketEngine + func (e *PacketEngine) Start(ctx context.Context, r *Range) (<-chan interface{}, <-chan error) + type PacketFiller interface + Fill func(packet gopacket.SerializeBuffer, r *Request) error + type PacketGenerator interface + Packets func(ctx context.Context, in <-chan *Request) <-chan *packet.BufferData + func NewPacketGenerator(filler PacketFiller) PacketGenerator + func NewPacketMultiGenerator(filler PacketFiller, numWorkers int) PacketGenerator + type PacketMethod interface + type PacketSource interface + Packets func(ctx context.Context, r *Range) <-chan *packet.BufferData + func NewPacketSource(reqgen RequestGenerator, pktgen PacketGenerator) PacketSource + type PortGenerator interface + Ports func(ctx context.Context, r *Range) (<-chan PortGetter, error) + func NewPortGenerator() PortGenerator + type PortGetter interface + GetPort func() (uint16, error) + type PortRange struct + EndPort uint16 + StartPort uint16 + type Range struct + DstSubnet *net.IPNet + Interface *net.Interface + Ports []*PortRange + SrcIP net.IP + SrcMAC net.HardwareAddr + type RateLimiter interface + Take func() time.Time + type Request struct + DstIP net.IP + DstMAC []byte + DstPort uint16 + Err error + Meta map[string]interface{} + SrcIP net.IP + SrcMAC []byte + type RequestGenerator interface + GenerateRequests func(ctx context.Context, r *Range) (<-chan *Request, error) + func NewFileIPPortGenerator(openFile OpenFileFunc) RequestGenerator + func NewFilterIPRequestGenerator(delegate RequestGenerator, excludeIPs IPContainer) RequestGenerator + func NewIPPortGenerator(ipgen IPGenerator, portgen PortGenerator) RequestGenerator + func NewIPRequestGenerator(ipgen IPGenerator) RequestGenerator + func NewLiveRequestGenerator(rg RequestGenerator, rescanTimeout time.Duration) RequestGenerator + type Result interface + ID func() string + type ResultChan interface + Chan func() <-chan Result + Put func(r Result) + func NewResultChan(ctx context.Context, capacity int) ResultChan + type Resulter interface + Results func() <-chan Result + type Scanner interface + Scan func(ctx context.Context, r *Request) (Result, error) + func NewRateLimitScanner(delegate Scanner, limiter RateLimiter) Scanner + type WrapIP net.IP + func (i WrapIP) GetIP() (net.IP, error) + type WrapPort uint16 + func (p WrapPort) GetPort() (uint16, error)