func parsePktTCP()

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
}