pkg/skoop/model/packet.go (33 lines of code) (raw):
package model
import (
"fmt"
"net"
"golang.org/x/exp/slices"
)
type Packet struct {
Src net.IP
Sport uint16
Dst net.IP
Dport uint16
Protocol Protocol
Encap *Packet
Mark uint32
}
func (p *Packet) String() string {
return fmt.Sprintf("%s %s:%d->%s:%d [%d]", p.Protocol, p.Src, p.Sport, p.Dst, p.Dport, p.Mark)
}
func (p *Packet) DeepCopy() *Packet {
pkt := &Packet{
Src: slices.Clone(p.Src),
Sport: p.Sport,
Dst: slices.Clone(p.Dst),
Dport: p.Dport,
Protocol: p.Protocol,
Encap: nil,
Mark: p.Mark,
}
if p.Encap != nil {
pkt.Encap = p.Encap.DeepCopy()
}
return pkt
}