3.1.5.2 Receiving a TopologyServerReply

The protocol receives a TopologyServerReply (section 2.2.3) packet as a response to the broadcast of a TopologyClientRequest (section 2.2.2) packet. If the packet is received on a network with an address other than the address specified in the NetworkAddressList ADM element at the position corresponding to the CurrentNetworkIndex ADM element, the protocol MUST discard the received packet and perform no further processing for it.

If an improperly formatted TopologyServerReply packet is received in response to the broadcast of the TopologyClientRequest packet, the protocol MUST discard the received packet and perform no further processing for it.

If TopologyServerReply.CorrelationID of the received TopologyServerReply packet does not match the RequestID ADM element, the protocol MUST discard the received packet and perform no further processing for it.

If the CurrentNetworkIndex ADM element does not equal the NumberOfNetworkAddresses ADM element and the TopologyServerReply.DirectoryServiceServerSize field equals 0x00000000, which indicates that the packet was sent by a server belonging to the local site, the protocol MUST perform the following actions:

  • The protocol MUST copy the content of the received TopologyServerReply packet to the LastTopologyServerReply ADM element.

  • The protocol MUST set the TopologyServerReplyReceived ADM element to TRUE.

  • The protocol MUST set the LastSuccessfulNetworkAddress ADM element to the address of the network via which the TopologyServerReply packet was received and MUST set the ValidLastSuccessfulNetworkAddress ADM element to TRUE.

  • The protocol MUST stop the Wait For Response Timer (section 3.1.2.1).

  • The protocol MUST send a new TopologyClientRequest packet, as specified in section 3.1.5.1.

  • The protocol MUST stop performing any further processing for the received TopologyServerReply packet.

If the CurrentNetworkIndex ADM element does not equal the NumberOfNetworkAddresses ADM element, the LastTopologyServerReply ADM element is not empty, and the TopologyServerReply.DirectoryServiceServerSize field does not equal 0x00000000, which indicates that the packet was sent by a server that does not belong to the local site, the protocol MUST send a new TopologyClientRequest packet, as specified in section 3.1.5.1 and MUST perform no further processing for the received TopologyServerReply packet.

If the CurrentNetworkIndex ADM element equals the NumberOfNetworkAddresses ADM element and the TopologyServerReply.DirectoryServiceServerSize field equals 0x00000000, which indicates that the packet was sent by a server belonging to the local site, the protocol MUST perform the following actions:

If the LastTopologyServerReply ADM element is empty and the TopologyServerReply.DirectoryServiceServerSize field does not equal 0x00000000, which indicates that the packet was sent by a server that does not belong to the local site, the protocol MUST perform the following actions:

  • The protocol MUST copy the content of the received TopologyServerReply packet to the LastTopologyServerReply ADM element.

  • The protocol MUST set the TopologyServerReplyReceived ADM element to TRUE.

  • The protocol MUST set the LastSuccessfulNetworkAddress ADM element to the address of the network via which the TopologyServerReply packet was received and MUST set the ValidLastSuccessfulNetworkAddress ADM element to TRUE.

  • The protocol MUST stop and start the Wait For Response Timer (section 3.1.2.1) with a timeout of 15 seconds.

  • The protocol MUST stop performing any further processing for the received TopologyServerReply packet.

If the CurrentNetworkIndex ADM element equals the NumberOfNetworkAddresses ADM element, the LastTopologyServerReply ADM element is not empty, and TopologyServerReply.DirectoryServiceServerSize does not equal 0, which indicates that the packet was sent by a server that does not belong to the local site, the protocol MUST perform the following actions:

  • The protocol MUST stop the Wait For Response Timer (section 3.1.2.1).

  • If LastTopologyServerReply.DirectoryServiceServerSize is not zero, the protocol MUST invoke the Populate DirectoryServerList (section 3.1.7.1) event.

  • The protocol MUST trigger the Populate ConnectedNetworkIdentifierList (section 3.1.7.2) event.

  • The protocol MUST set the LastSuccessfulNetworkAddress ADM element to the address of the network via which the TopologyServerReply packet was received and MUST set the ValidLastSuccessfulNetworkAddress ADM element to TRUE.

  • The protocol MUST complete the processing of the Get Directory Server List (section 3.1.4.1) Higher-Layer Triggered Event.