2.2 Message Syntax
DRT messages are designed for future extensibility such that each message element (for example, a field or set of fields) of each message is self-describing. As a result, the messages defined in this section have a number of FieldID and Length pairs that occur throughout the messages. Although each field is specified in the individual messages, it is helpful to explain the convention used.
The pattern used looks similar to the following.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FieldID |
Length |
||||||||||||||||||||||||||||||
Field Data (variable) |
|||||||||||||||||||||||||||||||
... |
FieldID (2 bytes): Constant indicating the kind of field.
-
Value
Meaning
DRT_HEADER
0x0010
Part of a DRT Header.
DRT_HEADER_ACKED
0x0018
An Acked MessageID follows.
DRT_ID
0x0030
A DRT ID follows.
TARGET_DRT_ID
0x0038
A Target DRT ID follows.
VALIDATE_DRT_ID
0x0039
A Validate DRT ID follows.
FLAGS_FIELD
0x0040
A flags field follows. The meaning of the individual flags is message-specific.
FLOOD_CONTROLS
0x0043
Flood criteria follows.
SOLICIT_CONTROLS
0x0044
Solicit criteria follows.
LOOKUP_CONTROLS
0x0045
Lookup criteria follows.
EXTENDED_PAYLOAD
0x005A
Extended payload follows.
DRT_ID_ARRAY
0x0060
An array of DRT IDs follows.
CREDENTIAL
0x0080
A Credential follows.
WCHAR
0x0084
A Unicode character follows.
CLASSIFIER
0x0085
A classifier string follows.
HASHED_NONCE
0x0092
A hashed nonce follows.
NONCE
0x0093
A nonce follows.
SPLIT_CONTROLS
0x0098
Buffer fragmentation information follows.
ROUTING_ENTRY
0x009A
A ROUTE_ENTRY follows.
VALIDATE_CPA
0x009B
An Encoded CPA structure follows, containing a CPA to validate.
REVOKE_CPA
0x009C
An Encoded CPA structure follows, containing a CPA to revoke.
IPV6_ENDPOINT
0x009D
An IPV6_ENDPOINT structure follows.
IPV6_ENDPOINT_ARRAY
0x009E
An array of IPV6_ENDPOINT structures follows.
KEYTOKEN
0x009F
A Keytoken structure follows.
ENCRYPTED_ENDPOINT_ARRAY
0x00A0
An encrypted IPV6_ENDPOINT_ARRAY field.
ENCRYPTED_ROUTING_ENTRY
0x00A1
An encrypted ROUTE_ENTRY field.
ENCRYPTED_CPA
0x00A2
An encrypted VALIDATE_CPA field.
ENCRYPTED_CLASSIFIER
0x00A3
An encrypted CLASSIFIER field.
ENCRYPTED_PAYLOAD
0x00A4
An encrypted EXTENDED_PAYLOAD field.
SIGNATURE
0x00A5
A signature.
KEY_IDENTIFIER
0x00A6
Used to identify which key is used to generate the KEYTOKEN.
Length (2 bytes): The length, in bytes, of the Field Data field.
Field Data (variable): Data comprising the body of this field. This data MUST be present if Length is set to a number greater than zero.
The FieldID fields in each message defined by DRT always start on a 4-byte boundary from the beginning of the DRT message. Padding fields will be included in a message to ensure this.
Unless otherwise specified, all 2-byte and 4-byte integer fields are defined in network byte order.