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.


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

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


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

drep[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.