in internal/tcp/tcp.go [109:125]
func parsePktTCP(pkt gopacket.Packet) (layers.TCP, time.Time, error) {
layer := pkt.Layer(layers.LayerTypeTCP)
if layer == nil {
return layers.TCP{}, time.Time{}, errors.New("invalid TCP layer")
}
tcpSegment := layer.(*layers.TCP)
var payload time.Time
if len(tcpSegment.Payload) >= defines.TimestampPayloadLengthBytes {
ts := append([]byte(nil), tcpSegment.Payload[:defines.TimestampPayloadLengthBytes]...)
if err := payload.UnmarshalBinary(ts); err != nil {
return *tcpSegment, time.Time{}, err
}
}
return *tcpSegment, payload, nil
}