Proposed (UDT Restructuring)

Note

I have been working on this project over the last few months, current progress is available here: (GitHub branch)

This represents the next set of “headers” after extracting the payload from a UDT packet.

  • Flags (1 byte / 8 bits) : Describes how to process the rest of the packet
    • Bit 7: L - Is set if the packet contains a Local Node ID

    • Bit 6: V - Is set if the packet contains an MD5 Verification

  • Packet Type (1 byte / 8 bits) : enumeration describing the kind of packet this represents

  • Version (1 byte / 8 bits) : the version of the specified type this packet is compatible with

  • Local Node ID (2 bytes / 16 bits little-endian) : If the “L” bit is set in the flags, the Local Node ID represents the node this was sent from

  • MD5 Verification (16 bytes) : If the “V” bit is set in the flags, the Verification represents a hash of the remains of the packet as well as a value specific to the node

Note

I’m increasingly uncertain of the purpose of the “Local Node ID” field and may move to dropping it from all packets

The contents of the individual packet are determined by an undocumented collection of calls to ExtendedIODevice::readPrimitive() (little-endian) and QDataStream (proprietary).