From 6a486d1191438fad456ed804301e1a145c1f6dfe Mon Sep 17 00:00:00 2001 From: Aram Price Date: Tue, 28 Nov 2023 08:58:36 -0800 Subject: [PATCH] Avoid `gopacket/pcap` import to ease builds We want to avoid importing `gopacket/pcap`; it forces CGO_ENABLED=1, which makes cross-compilation more challenging, which makes publishing binaries more difficult. fixes, when running `bin/build`: ``` vendor/github.com/gopacket/gopacket/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated ``` fixes, when running acceptance tests: ``` ../vendor/github.com/gopacket/gopacket/pcap/pcap_unix.go:35:10: fatal error: 'pcap.h' file not found ``` Signed-off-by: Brian Cunnie --- pcap/pcap.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pcap/pcap.go b/pcap/pcap.go index c28e65d05..5b6440b25 100644 --- a/pcap/pcap.go +++ b/pcap/pcap.go @@ -15,7 +15,6 @@ import ( "github.com/gopacket/gopacket" "github.com/gopacket/gopacket/layers" - "github.com/gopacket/gopacket/pcap" "github.com/gopacket/gopacket/pcapgo" "golang.org/x/crypto/ssh" @@ -286,17 +285,23 @@ func openPcapHandle(tcpdumpCmd string, session *ssh.Session, wg *sync.WaitGroup, // The pcap handle can be created without blocking after readable exists. out := make(chan gopacket.Packet) go func() { - handle, err := pcap.OpenOfflineFile(readable) + //handle, err := pcap.OpenOfflineFile(readable) + //if err != nil { + // cancel(openHandleError) + // return + //} + ngReader, err := pcapgo.NewNgReader(readable, pcapgo.NgReaderOptions{}) // which NgReaderOptions should I set? if err != nil { cancel(openHandleError) return } - packetSource := gopacket.NewPacketSource(handle, layers.LayerTypeEthernet) + //packetSource := gopacket.NewPacketSource(handle, layers.LayerTypeEthernet) + packetSource := gopacket.NewPacketSource(ngReader, layers.LayerTypeEthernet) // Run a goroutine that will write packets to the channel go func() { - defer handle.Close() + //defer handle.Close() for packet := range packetSource.Packets() { out <- packet