Something went wrong. Try again.
Cloudflare Tunnel client with NetBSD support
Something went wrong. Try again.
826 B · 41 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142package packet
import ( "github.com/google/gopacket")
var ( serializeOpts = gopacket.SerializeOptions{ FixLengths: true, ComputeChecksums: true, })
// RawPacket represents a raw packet or one encoded by Encodertype RawPacket struct { Data []byte}
type Encoder struct { // buf is reusable because SerializeLayers calls the Clear method before each encoding buf gopacket.SerializeBuffer}
func NewEncoder() *Encoder { return &Encoder{ buf: gopacket.NewSerializeBuffer(), }}
func (e *Encoder) Encode(packet Packet) (RawPacket, error) { encodedLayers, err := packet.EncodeLayers() if err != nil { return RawPacket{}, err } if err := gopacket.SerializeLayers(e.buf, serializeOpts, encodedLayers...); err != nil { return RawPacket{}, err } return RawPacket{ Data: e.buf.Bytes(), }, nil}