mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 13:05:46 +00:00
d4cc074187
Updates #13038 Change-Id: I89ce2129fee856f97986d6313d2b661c76476c0c Signed-off-by: Maisem Ali <maisem@tailscale.com>
40 lines
609 B
Go
40 lines
609 B
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package vnet
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"sync"
|
|
|
|
"github.com/google/gopacket"
|
|
"github.com/google/gopacket/pcapgo"
|
|
)
|
|
|
|
type pcapWriter struct {
|
|
f *os.File
|
|
|
|
mu sync.Mutex
|
|
w *pcapgo.NgWriter
|
|
}
|
|
|
|
func (p *pcapWriter) WritePacket(ci gopacket.CaptureInfo, data []byte) error {
|
|
p.mu.Lock()
|
|
defer p.mu.Unlock()
|
|
if p.w == nil {
|
|
return io.ErrClosedPipe
|
|
}
|
|
return p.w.WritePacket(ci, data)
|
|
}
|
|
|
|
func (p *pcapWriter) Close() error {
|
|
p.mu.Lock()
|
|
defer p.mu.Unlock()
|
|
if p.w != nil {
|
|
p.w.Flush()
|
|
p.w = nil
|
|
}
|
|
return p.f.Close()
|
|
}
|