3.1.3.2 Domain Time Source Selection Algorithm

The client MUST first obtain its current site by calling the DsrGetSiteName method described in [MS-NRPC] section 3.5.4.3.6.

The client MUST try to obtain a time source by making the calls in the following order with the specified parameters. If the client obtains at least one time source in any of the following steps, the client MUST NOT make subsequent calls.

  1. To obtain a reliable time source in the parent domain in the current site, the client MUST call the DsrGetDcNameEx2 method described in [MS-NRPC] section 3.5.4.3.1 with the following parameters.

    DomainName: MUST be set to the domain name of the parent domain, which is obtained by calling the NetrLogonGetTimeServiceParentDomain method in [MS-NRPC] section 3.5.4.8.6.

    SiteName: If the CrossSiteSyncFlags abstract data model element is set to ALL, the client MUST set this parameter to the site obtained by using DsrGetSiteName; otherwise, this parameter MUST be set to NULL.

    Flags: The "I" and "K" bits described in [MS-NRPC] section 3.5.4.3.3 MUST be set.

    The client MUST validate that the Flags field in the returned DomainControllerInfo structure has bits G and I set (as described in [MS-NRPC] section 2.2.1.2.1); otherwise, proceed to the next step.

  2. To obtain a reliable time source in the current domain in the current site, the client MUST call DsrGetDcNameEx2 with the following parameters.

    Note If the client is an RODC, this step MUST be skipped.

    DomainName: This parameter MUST be set to the domain name.

    SiteName: If CrossSiteSyncFlags is set to ALL, the client MUST set this parameter to the site obtained by using DsrGetSiteName; otherwise, this parameter MUST be set to NULL.

    Flags: The "I" and "K" bits described in [MS-NRPC] section 3.5.4.3.3 MUST be set.

    The client MUST validate that the Flags field in the returned DomainControllerInfo structure has bits G and I set (as described in [MS-NRPC] section 2.2.1.2.1); otherwise, proceed to the next step.

  3. To obtain a PDC in the current domain in the current site, the client MUST call DsrGetDcNameEx2 with the following parameters.

    DomainName: this parameter MUST be set to the domain name.

    SiteName: If CrossSiteSyncFlags is set to ALL, the client MUST set this parameter to the site obtained by using DsrGetSiteName; otherwise, this parameter MUST be set to NULL.

    Flags: The "I" and "E" bits described in [MS-NRPC] section 3.5.4.3.3 MUST be set.

    The client MUST validate that the Flags field in the returned DomainControllerInfo structure has bits A and G set (as described in [MS-NRPC] section 2.2.1.2.1); otherwise, proceed to the next step.

  4. To obtain a reliable time source in the parent domain in any site, the client MUST call DsrGetDcNameEx2 with the following parameters.

    DomainName: MUST be set to the domain name of the parent domain, which is obtained by calling the NetrLogonGetTimeServiceParentDomain method in [MS-NRPC] section 3.5.4.8.6.

    SiteName: This parameter MUST be set to NULL.

    Flags: The "I" and "K" bits described in [MS-NRPC] section 3.5.4.3.3 MUST be set.

    The client MUST validate that the Flags field in the returned DomainControllerInfo structure has bit I set (as described in [MS-NRPC] section 2.2.1.2.1); otherwise, proceed to the next step.

  5. To obtain a reliable time source in the current domain in any site, the client MUST call DsrGetDcNameEx2 with the following parameters.

    Note If the client is an RODC, this step MUST be skipped.

    DomainName: this parameter MUST be set to the domain name.

    SiteName: This parameter MUST be set to NULL.

    Flags: The "I" and "K" bits described in [MS-NRPC] section 3.5.4.3.3 MUST be set.

    The client MUST validate that the Flags field in the returned DomainControllerInfo structure has bit I set (as described in [MS-NRPC] section 2.2.1.2.1); otherwise, proceed to the next step.

  6. To obtain a PDC in the current domain in any site, the client MUST call DsrGetDcNameEx2 with the following parameters.

    DomainName: this parameter MUST be set to the domain name.

    SiteName: This parameter MUST be set to NULL.

    Flags: The "I" and "E" bits described in [MS-NRPC] section 3.5.4.3.3 MUST be set.

    The client MUST validate that the Flags field in the returned DomainControllerInfo structure has bit A set (as described in [MS-NRPC] section 2.2.1.2.1).

If a validated time source was obtained in one of the above steps, it is returned as the result of this algorithm. If no time source was obtained, none is returned.