2.2.3.6.1 RTS PDU Header
The RTS PDU Header has the same layout as the common header of the connection-oriented RPC PDU as specified in [C706] section 12.6.1, with a few additional requirements around the contents of the header fields. The additional requirements are as follows:
All fields MUST use little-endian byte order.
Fragmentation MUST NOT occur for an RTS PDU.
PFC_FIRST_FRAG and PFC_LAST_FRAG MUST be present in all RTS PDUs, and all other PFC flags MUST NOT be present.
The rpc_vers and rpc_vers_minor fields MUST contain version information as described in [MS-RPCE] section 1.7.
PTYPE MUST be set to a value of 20. This field differentiates RTS packets from other RPC packets.
The packed_drep MUST indicate little-endian integer and floating-pointer byte order, IEEE float-point format representation, and ASCII character format as specified in [C706] section 12.6.
The auth_length MUST be set to 0.
The frag_length field MUST reflect the size of the header plus the size of all commands, including the variable portion of variable-sized commands.
The call_id MUST be set to 0 by senders and MUST be 0 on receipt.
This protocol adds two more fields to the RTS PDU header that MUST be present immediately after the common header. The following diagram specifies the header format.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
rpc_vers |
rpc_vers_minor |
PTYPE |
pfc_flags |
||||||||||||||||||||||||||||
packed_drep |
|||||||||||||||||||||||||||||||
frag_length |
auth_length |
||||||||||||||||||||||||||||||
call_id |
|||||||||||||||||||||||||||||||
Flags |
NumberOfCommands |
rpc_vers (1 byte): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
rpc_vers_minor (1 byte): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
PTYPE (1 byte): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
pfc_flags (1 byte): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
packed_drep (4 bytes): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section. packed_drep takes the following form.
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1drep[0]
drep[1]
drep[2]
drep[3]
frag_length (2 bytes): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
Value |
Meaning |
---|---|
RTS_FLAG_NONE 0x0000 |
No special flags. |
RTS_FLAG_PING 0x0001 |
Proves that the sender is still active; can also be used to flush the pipeline by the other party. |
RTS_FLAG_OTHER_CMD 0x0002 |
Indicates that the PDU contains a command that cannot be defined by the other flags in this table. |
RTS_FLAG_RECYCLE_CHANNEL 0x0004 |
Indicates that the PDU is associated with recycling a channel. |
RTS_FLAG_IN_CHANNEL 0x0008 |
Indicates that the PDU is associated with IN channel communications. |
RTS_FLAG_OUT_CHANNEL 0x0010 |
Indicates that the PDU is associated with OUT channel communications. |
RTS_FLAG_EOF 0x0020 |
Indicates that this is the last PDU on an IN channel or OUT channel. Not all channels, however, use this to indicate the last PDU. |
RTS_FLAG_ECHO 0x0040 |
Signifies that this PDU is an echo request or response. |
auth_length (2 bytes): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
call_id (4 bytes): As specified in [C706] section 12.6.1, with additional requirements specified earlier in this section.
Flags (2 bytes): MUST contain one or more of the following flags. The valid combination of flags for each RTS PDU is defined in section 2.2.4 of this specification. The following table is meant to define numeric values for each flag and as an aid in understanding this specification, and to convey the general context in which a given flag is used. Precise definition on what flags MUST be used for each RTS PDU can be obtained from the section for the respective RTS PDU in section 2.2.4. An implementation MUST NOT change the flags in the RTS PDU as defined in the respective RTS PDU section within section 2.2.4.
NumberOfCommands (2 bytes): An implementation MUST set this field to be equal to the number of commands in the RTS PDU body.