fix: not starting packet queue if the interface is in monitor mode

This commit is contained in:
evilsocket 2018-02-20 18:23:58 +01:00
parent 9d69e238a0
commit b48bb8c31c
2 changed files with 17 additions and 8 deletions

View file

@ -54,15 +54,17 @@ func NewQueue(iface *network.Endpoint) (q *Queue, err error) {
Activities: make(chan Activity),
iface: iface,
active: true,
active: !iface.IsMonitor(),
}
if q.handle, err = pcap.OpenLive(iface.Name(), 1024, true, pcap.BlockForever); err != nil {
return
}
if q.active == true {
if q.handle, err = pcap.OpenLive(iface.Name(), 1024, true, pcap.BlockForever); err != nil {
return
}
q.source = gopacket.NewPacketSource(q.handle, q.handle.LinkType())
go q.worker()
q.source = gopacket.NewPacketSource(q.handle, q.handle.LinkType())
go q.worker()
}
return
}
@ -168,6 +170,9 @@ func (q *Queue) Send(raw []byte) error {
func (q *Queue) Stop() {
q.Lock()
defer q.Unlock()
q.handle.Close()
q.active = false
if q.active == true {
q.handle.Close()
q.active = false
}
}