3.2.1.5 Message Processing Events and Sequencing Rules
When a broadcast lookup request for server entries is received, the following actions MUST be taken:
The server locator MUST read the computer name of the requester from the WkstaName field in the QueryPacket structure.
The server locator MUST extract the objectUUID, interfaceid, and entry_name information from the corresponding fields specified in the QueryPacket.
The server locator MUST locate interfaces exported to the server entries in the entry cache that match the request, as specified in the following items:
Entry name criterion: An entry name criterion MUST be treated as unspecified if the entry_name field is filled with zero bytes.
If the entry name is specified with a domain name part that does not match the NetBIOS domain name of the computer in a case-insensitive comparison, all cached entries MUST be treated as not matching the request's entry name criterion.
If the entry name is specified with no domain name part, any cached entry whose name matches the specified entry name in a case-insensitive comparison MUST be treated as matching the request's entry name criterion. All the interfaces exported to this entry MUST be treated as matching the request's entry name criterion.
If the entry name is unspecified, all cached entries MUST be treated as matching the request's entry name criterion. Any interface exported to any entry MUST be treated as matching the request's entry name criterion.
Interface identifier criterion: An interface identifier criterion MUST be treated as unspecified if the interface field in the QueryPacket is filled with zero bytes.
If the interface identifier is specified, any interfaces with a UUID that matches the QueryPacket interface identifier UUID MUST be treated as matching the request's interface identifier criterion. The interface version MUST be ignored for evaluating this criterion.
If the interface identifier is unspecified, all cached entries MUST be treated as matching the request's interface identifier criterion. Any interface exported to any entry MUST be treated as matching the request's interface identifier criterion.
The object UUID value MUST be ignored.
Interfaces that match both the entry name criteria and the interface identifier criteria MUST be treated as matching the request. If both the entry name and the interface identifier are unspecified, both the entry name criteria and the interface identifier criteria MUST be treated as matching the request and all server entries MUST be used to form the QueryReply structure.
Interfaces that do not match both the entry name criteria and the interface identifier criteria MUST be treated as matching no interfaces. Interfaces that meet only one of the criteria (for example, entry name is matched, but no interface identifier is specified) MUST be treated as matching no interfaces.
Interfaces with matching server entries MUST be used to form a QueryReply structure. If no interfaces are matched, the server MUST respond with a QueryReply structure with an empty ReplyBuffer.