3.3.1 Abstract Data Model

This section describes a sample model of browser server data organization that can be implemented to support this protocol. The purpose of this description is simply to help explain how this aspect of the protocol works. This specification does not prescribe that implementations adhere to this model as long as their external behavior is consistent with what is described throughout this document.

AlwaysActAsDomainController: A Boolean that specifies if the machine on which the browser server is running has to behave as a domain controller for Browser protocol interactions regardless of whether the server truly is a domain controller. This element SHOULD be set locally by a principal with administrative privileges, and is not shared with other protocols.<35>

Backup Browser List: A list of the machines that the local master browser has designated as backup browser servers.

BrowserServerUpTime: Records the time when the Browser service was initially started.

Current Role: The current state in the browser server state machine shown in the preceding figure.

Machine Group Name: The NetBIOS name of the machine group the client is a member of.

DomainAnnouncement Timer Count: A count of the number of times that the DomainAnnouncement timer has expired. It MUST be reset to 0 after a browser wins an election.

LocalMasterAnnouncement Timer Count: A count of the number of times that the LocalMasterAnnouncement timer has expired. It SHOULD be reset to 0 after a browser wins an election.<36>

MasterAnnouncement Timer Count: A count of the number of times that the MasterAnnouncement timer has expired. It MUST be reset to 0 after a browser wins an election.

Machine Groups List: An ordered list of machine groups; each entry MUST contain a domain or workgroup name, the name of the Local Master browser for that machine group (as received in the DomainAnnouncement frame specified in section 2.2.7) and a Machine Group Expiration Timer for each machine group. The ordering of the list is implementation defined, but the order MUST be stable, and the list MUST NOT contain entries with duplicate names. The Machine Groups List MUST be ordered to implement the semantics of the NetServerEnum3 request (which specifies a resume point). For details of NetServerEnum2 and NetServerEnum3 as they are used here, see section 3.3.5.6.<37>

Election Transmission Count: A count of the number of RequestElection frames sent by the browser server during an election. The election transmission count MUST be reset on each election.

IsDomainController: A Boolean that specifies if the machine on which the browser server is running is a domain controller.

IsPrimaryDomainController: A Boolean that specifies if the machine on which the browser server is running is the primary domain controller (TRUE) or a backup domain controller (FALSE).<38>

Servers List: An ordered list of servers and HostAnnouncementCount values (as specified in section 3.2.1), as provided in HostAnnouncement frames. The ordering of the list is implementation defined, but the order MUST be stable and the list MUST NOT contain entries with duplicate names. The Servers List element MUST be ordered to implement the semantics of the NetServerEnum3 request (section 3.3.5.6), which specifies a resume point.<39>

OtherDomains: Specifies a list of NetBIOS names of domains browsed by the computer. Each name MUST be at most 15 characters in length, and MUST NOT contain trailing spaces or a NetBIOS suffix as defined in section 2.1.1. The OtherDomains element is shared with the Workstation Service Remote Protocol Specification [MS-WKST], modified through the WkstaAddOtherDomains event (section 3.2.6.2). This element is also shared with the Common Internet File System (CIFS) Browser Auxiliary Protocol [MS-BRWSA] to query the OtherDomains information from a domain controller.

Be aware that the preceding model can be implemented using a variety of techniques. An implementation can implement such data in any way.