2.2.8 TRANS_COMMAND_CONNECT_ACCEPT

The TRANS_COMMAND_CONNECT_ACCEPT packet is used to accept a connection request.


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

bCommand

bExtOpCode

bMsgID

bRspId

dwCurrentProtocolVersion

dwSessID

tTimestamp

bCommand (1 byte): An 8-bit integer that provides the command code for the message. This field MUST be set to one of the following values.

Value

Meaning

0x80

Indicates that this message utilizes a command frame (CFRAME).

0x88

Indicates that this message utilizes a CFRAME (0x80) and POLL (0x08) values, which specify that the sender requests immediate acknowledgment (ACK) from the receiver upon receipt of the message.

When the packet is used to accept a connection request, the CFRAME and POLL values MUST be set. When the packet is used to complete the connection handshake, the POLL value MUST NOT be set. If any other values are set the packet MUST be ignored.

bExtOpCode (1 byte): An 8-bit integer that provides the extended operation code for the message. This field MUST be set to 0x02 to denote that this message accepts a connection.

bMsgID (1 byte): An 8-bit integer that provides the identifier for the TRANS_COMMAND_CONNECT_ACCEPT message. The initial value SHOULD be 0 and SHOULD be incremented if the packet is retried.

bRspId (1 byte): An 8-bit integer response identifier. This field MUST be set to the value of the bMsgID field in the TRANS_COMMAND_CONNECT (section 2.2.7) or TRANS_COMMAND_CONNECT_ACCEPT message to which this is a response.

dwCurrentProtocolVersion (4 bytes): The version number of the requestor's DirectPlay protocol, in little-endian byte order, where the upper 16 bits are considered a major version number and the lower 16 bits are considered a minor version number. The major version number MUST NOT be set to any value other than 0x0001. The minor version number SHOULD<6> be set to 0x0000 to indicate support for the base features, but MAY be set to a value between 0x00010000 and 0x00010004, inclusive.

The recipient SHOULD be prepared to support older message formats used by earlier minor versions. The recipient MUST ignore this packet if it does not support older message formats.

The recipient SHOULD be prepared to receive minor version numbers higher than what it implements and supplies in its own TRANS_COMMAND_CONNECT or TRANS_COMMAND CONNECT_ACCEPT message, but both sides MUST only use message formats compatible with the lower of their two version numbers.

Note While a receiver can indicate support for coalescence (version level of 0x00010005 or higher) and a sender can choose to use this feature when it is available by the receiver, the DirectPlay DXDiag Usage Protocol utilizes the coalescence feature on any TRANS_USERDATA messages except TRANS_USERDATA_SEND_MESSAGE (section 2.2.31). In addition, the signing feature (version level 0x00010006) will not be utilized by the DirectPlay DXDiag Usage Protocol, even when the receiver indicates support for the signing feature.

Value

Meaning

0x00010000 — 0x00010004

Any protocol version number between 1.0 and 1.4 implements the base features.

0x00010005

Protocol version number 1.5 implements the base features, and adds support for coalescence.

Note The coalescence feature is not used by the base implementation of the DirectPlay DXDiag Usage Protocol.

0x00010006

Protocol version number 1.6 implements the base features, supports coalescence, and adds support for signing.

Note The signing feature is not used by the base implementation of the DirectPlay DXDiag Usage Protocol.

dwSessID (4 bytes): A 32-bit integer session identifier. The value MUST be set to the value of dwSessID specified in the TRANS_COMMAND_CONNECT packet; otherwise, the packet SHOULD be ignored.

tTimestamp (4 bytes): A 32-bit integer that provides the sender's computer system tick count. The value of the tTimestamp field SHOULD be ignored, but MAY be used to estimate the differences in local tick counts between a sender and receiver.