dtn::Prophet::ProphetHeader Struct Reference

#include <Prophet.h>

List of all members.


Detailed Description

Header Definition p.

21, 4.2

Definition at line 91 of file Prophet.h.


Public Attributes

u_int8_t version
 This version of the PRoPHET Protocol = 1.
u_int8_t flags
 TBD.
u_int8_t result
 Field that is used to indicate whether a response is required to the request message if the outcome is successful.
u_int8_t code
 Field gives further information concerning the result in a response message.
u_int16_t sender_instance
 For messages during the Hello phase with the Hello SYN, Hello SYNACK, and Hello ACK functions, it is the sender's instance number for the link.
u_int16_t receiver_instance
 For messages during the Hello phase with the Hello SYN, Hello SYNACK, and Hello ACK functions, is what the sender believes is the current instance number for the link, allocated by the entity at the far end of the link.
u_int32_t transaction_id
 Used to associate a message with its response message.
u_int16_t submessage_flag:1
 If S is set then the SubMessage Number field indicates the total number of SubMessage segments that compose the entire message.
u_int16_t submessage_num:15
 When a message is segmented because it exceeds the MTU of the link layer, each segment will include a submessage number to indicate its position.
u_int16_t length
 Length in octets of this message including headers and message body.

Member Data Documentation

u_int8_t dtn::Prophet::ProphetHeader::version

This version of the PRoPHET Protocol = 1.

Definition at line 92 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int8_t dtn::Prophet::ProphetHeader::flags

TBD.

Definition at line 93 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int8_t dtn::Prophet::ProphetHeader::result

Field that is used to indicate whether a response is required to the request message if the outcome is successful.

A value of "NoSuccessAck" indicates that the request message does not expect a response if the outcome is successful, and a value of "AckAll" indicates that a response is expected if the outcome is successful. In both cases a failure response MUST be generated if the request fails.

In a response message, the result field can have two values: "Success," and "Failure". The "Success" results indicates a success response. All messages that belong to the same success response will have the same Transaction Identifier. The "Success" result indicates a success response that may be contained in a single message or the final message of a success response spanning multiple messages.

ReturnReceipt is a result field used to indicate that an acknowledgement is required for the message. The default for Messages is that the controller will not acknowledge responses. In the case where an acknowledgement is required, it will set the Result Field to ReturnReceipt in the header of the Message.

The encoding of the result field is:

NoSuccessAck: Result = 1
AckAll: Result = 2
Success: Result = 3
Failure: Result = 4
ReturnReceipt Result = 5

Definition at line 124 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int8_t dtn::Prophet::ProphetHeader::code

Field gives further information concerning the result in a response message.

It is mostly used to pass an error code in a failure response but can also be used to give further information in a success response message or an event message. In a request message, the code field is not used and is set to zero.

If the Code field indicates that the Error TLV is included in the message, further information on the error will be found in the Error TLV, which MUST be the the first TLV after the header.

The encoding is:

PRoPHET Error messages 0x000 - 0x099
Reserved 0x0A0 - 0x0FE
Error TLV in message 0x0FF

Definition at line 143 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int16_t dtn::Prophet::ProphetHeader::sender_instance

For messages during the Hello phase with the Hello SYN, Hello SYNACK, and Hello ACK functions, it is the sender's instance number for the link.

It is used to detect when the link comes back up after going down or when the identity of the entity at the other end of the link changes. The instance number is a 16- bit number that is guaranteed to be unique within the recent past and to change when the link or node comes back up after going down. Zero is not a valid instance number. For the RSTACK function, the Sender Instance field is set to the value of the Receiver Instance field from the incoming message that caused the RSTACK function to be generated. Messages sent after the Hello phase is completed should use the sender's instance number for the link.

Definition at line 159 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int16_t dtn::Prophet::ProphetHeader::receiver_instance

For messages during the Hello phase with the Hello SYN, Hello SYNACK, and Hello ACK functions, is what the sender believes is the current instance number for the link, allocated by the entity at the far end of the link.

If the sender of the message does not know the current instance number at the far end of the link, this field SHOULD be set to zero. For the RSTACK message, the Receiver Instance field is set to the value of the Sender Instance field from the incoming message that caused the RSTACK message to be generated. Messages sent after the Hello phase is completed should use what the sender believes is the current instance number for the link, allocated by the entity at the far end of the link.

Definition at line 174 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int32_t dtn::Prophet::ProphetHeader::transaction_id

Used to associate a message with its response message.

This should be set in request messages to a value that is unique for the sending host within the recent past. Reply messages contain the Transaction Indentifier of the request they are responding to.

Definition at line 181 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().

u_int16_t dtn::Prophet::ProphetHeader::submessage_flag

If S is set then the SubMessage Number field indicates the total number of SubMessage segments that compose the entire message.

If it is not set then the SubMessage Number field indicates the sequence number of this SubMessage segment within the whole message. the S field will only be set in the first sub-message of a sequence.

Definition at line 190 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize().

u_int16_t dtn::Prophet::ProphetHeader::submessage_num

When a message is segmented because it exceeds the MTU of the link layer, each segment will include a submessage number to indicate its position.

Alternatively, if it is the first submessage in a sequence of submessages, the S flag will be set and this field will contain the total count of submessage segments.

Definition at line 199 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize().

u_int16_t dtn::Prophet::ProphetHeader::length

Length in octets of this message including headers and message body.

If the message is fragmented, this field contains the length of this submessage.

Definition at line 205 of file Prophet.h.

Referenced by dtn::ProphetTLV::deserialize(), and dtn::ProphetTLV::serialize().


The documentation for this struct was generated from the following file:
Generated on Sat Sep 8 08:36:22 2007 for DTN Reference Implementation by  doxygen 1.5.3