Skip to content

Commit a727ade

Browse files
committed
Fix BPF filter when listen on all interfaces
It was caching bpf filter of first interface
1 parent 92c63de commit a727ade

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

capture/capture.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -284,14 +284,16 @@ func (l *Listener) PcapHandle(ifi pcap.Interface) (handle *pcap.Handle, err erro
284284
if err != nil {
285285
return nil, fmt.Errorf("PCAP Activate device error: %q, interface: %q", err, ifi.Name)
286286
}
287-
if l.BPFFilter == "" {
288-
l.BPFFilter = l.Filter(ifi)
287+
288+
bpfFilter := l.BPFFilter
289+
if bpfFilter == "" {
290+
bpfFilter = l.Filter(ifi)
289291
}
290-
fmt.Println("Interface:", ifi.Name, ". BPF Filter:", l.BPFFilter)
291-
err = handle.SetBPFFilter(l.BPFFilter)
292+
fmt.Println("Interface:", ifi.Name, ". BPF Filter:", bpfFilter)
293+
err = handle.SetBPFFilter(bpfFilter)
292294
if err != nil {
293295
handle.Close()
294-
return nil, fmt.Errorf("BPF filter error: %q%s, interface: %q", err, l.BPFFilter, ifi.Name)
296+
return nil, fmt.Errorf("BPF filter error: %q%s, interface: %q", err, bpfFilter, ifi.Name)
295297
}
296298
return
297299
}

0 commit comments

Comments
 (0)