3.1.5.2.10 Receive FLOOD

This message is sent any time a remote node updates a record or receives an updated record. The message is also sent as part of synchronization.

If the message fails to conform to any of the following conditions, then the message MUST be discarded unprocessed and the connection MUST be terminated.

  • The Message Size MUST be at least 0x10.

  • Record Offset MUST be at most Message Size.

  • Reserved2 MUST be zero.

If the message is received when the connection is not in the LINK_STATE_CONNECTED state, the message MUST be discarded and the connection MUST be terminated.

Otherwise, the record contained in the Record Data field in the FLOOD message MUST be validated, as specified in section 3.1.7.27. If the record is not found to be valid, the FLOOD message MUST NOT be processed further.

Otherwise, the local node MUST determine if the record is "new", "already present" or "old" using the following algorithm:

  • If no record identified by the same record ID is found in the local database, the record MUST be classified as "new".

  • Otherwise, the Record Conflict Resolution algorithm, specified in section 3.1.7.32, MUST be used to classify the record.

If the received record is classified as "new", the record MUST be added to the local database, and if a record already exists in the local database with the same record ID, it MUST be deleted. A new FLOOD message containing this record MUST also be sent (see section 3.1.7.1) to each Neighbor other than the one that sent this FLOOD message.

If the received record is "old", the local node MUST respond with a FLOOD message (see section 3.1.7.1) containing the record with the same Record ID from the local database.

For all three classifications, the local node MUST send (see section 3.1.7.1) an ACK message to the FLOOD message's sender, containing the record ID for this record, with the "Useful" flag set to 1 if the received record was classified as "new", and set to 0 otherwise. The local node MUST also update the connection utility associated with this connection, as specified in section 3.1.7.33.

Further processing MUST be performed on the received record according to its Record Type. For more details, see sections 3.1.7.10 through 3.1.7.10.5.