mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-14 13:17:07 +00:00
42 lines
1004 B
Go
42 lines
1004 B
Go
// Copyright 2012 Google, Inc. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style license
|
|
// that can be found in the LICENSE file in the root of the source
|
|
// tree.
|
|
// +build linux,go1.7
|
|
|
|
package pcapgo_test
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/google/gopacket"
|
|
"github.com/google/gopacket/layers"
|
|
"github.com/google/gopacket/pcapgo"
|
|
)
|
|
|
|
func Example_captureEthernet() {
|
|
f, err := os.Create("/tmp/lo.pcap")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer f.Close()
|
|
pcapw := pcapgo.NewWriter(f)
|
|
if err := pcapw.WriteFileHeader(1600, layers.LinkTypeEthernet); err != nil {
|
|
log.Fatalf("WriteFileHeader: %v", err)
|
|
}
|
|
|
|
handle, err := pcapgo.NewEthernetHandle("lo")
|
|
if err != nil {
|
|
log.Fatalf("OpenEthernet: %v", err)
|
|
}
|
|
|
|
pkgsrc := gopacket.NewPacketSource(handle, layers.LayerTypeEthernet)
|
|
for packet := range pkgsrc.Packets() {
|
|
if err := pcapw.WritePacket(packet.Metadata().CaptureInfo, packet.Data()); err != nil {
|
|
log.Fatalf("pcap.WritePacket(): %v", err)
|
|
}
|
|
}
|
|
}
|