What cells can be sent before a VERSIONS cell, and what is their CIRCID_LEN?
CIRCID_LEN is 2 for link protocol versions 1, 2, and 3. CIRCID_LEN is 4 for link protocol version 4 or higher. The VERSIONS cell itself always has CIRCID_LEN == 2 for backward compatibility.
But what is the CIRCID_LEN for early VPADDING, AUTHORIZE, or PADDING cells?
When this handshake is in use, the first cell must be VERSIONS, VPADDING or AUTHORIZE, and no other cell type is allowed to intervene besides those specified, except for PADDING and VPADDING cells.
Is it valid to send VPADDING, then PADDING, then VERSIONS? If so, what is their CIRCID_LEN? Which sentence prevails, the one above, or the one below?
Parties MUST NOT send any other cells on a connection until they have received a VERSIONS cell.