From 061a02e370cd16d9d3f84fdc27bdc0de75fdb2d5 Mon Sep 17 00:00:00 2001 From: dimagolomozy Date: Wed, 9 Jun 2021 11:47:12 +0300 Subject: [PATCH] evaluate filters for each nic --- capture/capture.go | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/capture/capture.go b/capture/capture.go index 914a830..439987e 100644 --- a/capture/capture.go +++ b/capture/capture.go @@ -270,13 +270,7 @@ func (l *Listener) PcapHandle(ifi net.Interface) (handle *pcap.Handle, err error if err != nil { return nil, fmt.Errorf("PCAP Activate device error: %q, interface: %q", err, ifi.Name) } - if l.BPFFilter != "" { - if l.BPFFilter[0] != '(' || l.BPFFilter[len(l.BPFFilter)-1] != ')' { - l.BPFFilter = "(" + l.BPFFilter + ")" - } - } else { - l.BPFFilter = l.Filter(ifi) - } + l.BPFFilter = l.Filter(ifi) fmt.Println("Interface:", ifi.Name, ". BPF Filter:", l.BPFFilter) err = handle.SetBPFFilter(l.BPFFilter) if err != nil { @@ -295,13 +289,7 @@ func (l *Listener) SocketHandle(ifi net.Interface) (handle Socket, err error) { if err = handle.SetPromiscuous(l.Promiscuous || l.Monitor); err != nil { return nil, fmt.Errorf("promiscuous mode error: %q, interface: %q", err, ifi.Name) } - if l.BPFFilter != "" { - if l.BPFFilter[0] != '(' || l.BPFFilter[len(l.BPFFilter)-1] != ')' { - l.BPFFilter = "(" + l.BPFFilter + ")" - } - } else { - l.BPFFilter = l.Filter(ifi) - } + l.BPFFilter = l.Filter(ifi) fmt.Println("BPF Filter: ", l.BPFFilter) if err = handle.SetBPFFilter(l.BPFFilter); err != nil { handle.Close() @@ -427,16 +415,12 @@ func (l *Listener) activatePcapFile() (err error) { if handle, e = pcap.OpenOffline(l.host); e != nil { return fmt.Errorf("open pcap file error: %q", e) } - if l.BPFFilter != "" { - if l.BPFFilter[0] != '(' || l.BPFFilter[len(l.BPFFilter)-1] != ')' { - l.BPFFilter = "(" + l.BPFFilter + ")" - } - } else { - addr := l.host - l.host = "" - l.BPFFilter = l.Filter(net.Interface{}) - l.host = addr - } + + tmp := l.host + l.host = "" + l.BPFFilter = l.Filter(net.Interface{}) + l.host = tmp + if e = handle.SetBPFFilter(l.BPFFilter); e != nil { handle.Close() return fmt.Errorf("BPF filter error: %q, filter: %s", e, l.BPFFilter)