3.4.1.5.1.1 Broadcast Lookup

The master locator MUST initiate a broadcast lookup to look for entries exported to server locators on other computers. To initiate this, the master locator MUST take the following actions:

  1. MUST wait for any ongoing broadcast lookup request to complete.

  2. MUST initialize a QueryPacket structure as follows:

    1. Initialize the WkstaName field in the structure with the NetBIOS name of the computer.

    2. If the method called was I_nsi_lookup_begin, initialize the QueryPacket structure's Interface, Object, and EntryName fields with the interfaceid, obj_uuid, and entry_name parameters specified in the request, respectively. For any parameter not specified in the request, the corresponding QueryPacket field MUST be initialized to all zeros.

    3. If the method called was I_nsi_entry_object_inq_begin, the master locator MUST initialize the QueryPacket structure's EntryName field with the entry_name parameter. The QueryPacket structure's interfaceid and obj_uuid field MUST be initialized to all zeros.

  3. The QueryPacket structure MUST be broadcast to a destination chosen based on the entry name, as follows:

    1. If the domainname component of entry name is absent in the entry_name parameter or if the entry_name is empty, the master locator MUST broadcast the request to all reachable computers on the network, as specified for broadcast lookup in section 2.1.

    2. If the domainname component of entry name is present in the entry_name parameter, the master locator MUST broadcast the request to all computers in the domain represented by the domainname as specified for broadcast lookup in section 2.1.

  4. The master locator MUST start the broadcast response timer and wait for responses, as specified for broadcast lookup in section 2.1.

  5. While the broadcast response timer has not yet expired, the master locator MUST receive each valid response into a QueryReply structure.

  6. The master locator MUST ignore any responses in which the domain field in the QueryReply structure does not match the NetBIOS domain name of the computer in a case-insensitive comparison.

  7. The master locator MUST ignore the remaining reply buffers after an invalid reply buffer (section 2.2.4.2.2.2). A reply buffer MUST be considered invalid under the following conditions:

    1. If the type field in the fixed_part_of_reply structure does not match MailslotServerEntryType(1).

    2. If the length of the Unicode [UNICODE] string in entryName field is not equal to the field EntryNameLength in the fixed_part_of_reply structure.

    3. If the entryName field does not match the syntax specified in section 2.2.2. The master locator MUST NOT do any validations on the name field of the entry name to check for characters that are not allowed in an RDN (section 2.2.2).

    4. If the objListSize field exceeds the maximum length that can fit in the reply buffer.

    5. If the length of the Binding field is not equal to the field BindingLength in the fixed_part_of_reply.

  8. The master locator MUST update the Client Response cache and Discovered Entries cache with valid responses.

  9. On expiration of the broadcast response timer, the master locator MUST stop processing responses.