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.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

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.