2.2.19.1 BaseHeader

The BaseHeader is the first field of each packet described in this section. The BaseHeader contains information to identify and manage protocol packets.


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

VersionNumber

Reserved

Flags

Signature

PacketSize

TimeToReachQueue

VersionNumber (1 byte): An 8-bit unsigned integer that is the version of the packet format. This field MUST be set to the value 0x10.

Reserved (1 byte): Reserved for future use. This field can be set to any arbitrary value when sent and MUST be ignored on receipt.

Flags (2 bytes): A 16-bit unsigned short integer containing a set of options that provides additional information about the packet. Any combination of these values is acceptable unless otherwise noted in the following table.


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

PR

A

B

C

D

E

F

G

H

I

J

K

L

M

PR (3 bits): Specifies the priority of the message in the packet. This field has a valid range from 0x0 to 0x7, with 0x7 being the highest priority. The default is 0x3. A message with a higher priority MUST be placed closer to the front of the queue. This field MUST be set to a value of 0x0 if the packet contains a transactional message. For more details, see UserHeader.Flags.TH in section 2.2.19.2.

A - IN (1 bit): Indicates that the message within the packet is internal and used by message transfer protocols for connection establishment and session acknowledgements. This field MUST be set if the packet is an EstablishConnection Packet as defined in [MS-MQQB] section 2.2.3, a ConnectionParameters Packet as defined in [MS-MQQB] section 2.2.2, or a SessionAck Packet as defined in [MS-MQQB] section 2.2.6. This field MUST NOT be set if the packet is a OrderAck Packet as defined in [MS-MQQB] sections 2.2.4 or a FinalAck Packet as defined in [MS-MQQB] section 2.2.5.

B - SH (1 bit): Specifies if a SessionHeader (section 2.2.20.4) is present in the packet. If set, the packet MUST contain a SessionHeader.

C - DH (1 bit): Specifies if a DebugHeader (section 2.2.20.8) is present in the packet. This field MUST NOT be set if the BaseHeader is part of a packet other than a UserMessage Packet (section 2.2.20). If and only if set, MUST the packet include a DebugHeader.

D - X9 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

E - X8 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

F - TR (1 bit): Specifies whether message tracing is enabled for this packet. This field MUST be set if message tracing is required for this message. If this field is set, the DH field MUST also be set.

G - X6 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

H - X5 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

I - X4 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

J - X3 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

K - X2 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

L - X1 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

M - X0 (1 bit): Reserved. This field SHOULD NOT be set when sent and MUST be ignored on receipt.

Signature (4 bytes): A 32-bit unsigned integer that is the packet signature value. This field MUST be set to 0x524F494C.

PacketSize (4 bytes): A 32-bit unsigned integer that indicates the packet size. This field MUST be set to the size, in bytes, of the entire packet including the base header and any padding bytes used to align the various message headers on 4-byte boundaries, but MUST NOT include the SessionHeader size when the SessionHeader is present. This field has a maximum value of 0x00400000.

TimeToReachQueue (4 bytes): A 32-bit unsigned integer that indicates the length of time, in seconds, that a UserMessage Packet has to reach its destination queue manager. This field has a valid range from 0x00000000 to 0xFFFFFFFF. The value 0xFFFFFFFF indicates an infinite time.

When a UserMessage Packet is sent or received, this value MUST be evaluated against the current system time and the UserMessage.UserHeader.SentTime field. If CURRENT_TIME - UserMessage.UserHeader.SentTime is greater than the value of this field, then the UserMessage Packet has expired and MUST be deleted by a sender and ignored by a receiver.

When the BaseHeader is not part of a UserMessage Packet, this value MUST be set to 0xFFFFFFFF.

For the purpose of this section, CURRENT_TIME is defined as the number of seconds elapsed since midnight (00:00:00), January 1, 1970 Coordinated Universal Time (UTC).