Ejemplo n.º 1
0
static
DWORD
CdcGetClientSiteName(
    PWSTR* ppszSiteName
    )
{
    DWORD dwError = 0;
    PWSTR pszSiteName = NULL;

    if (!ppszSiteName)
    {
        dwError = ERROR_INVALID_PARAMETER;
        BAIL_ON_VMAFD_ERROR(dwError);
    }

    dwError = CdcRegDbGetSiteName(&pszSiteName);
    BAIL_ON_VMAFD_ERROR(dwError);

    *ppszSiteName = pszSiteName;

cleanup:

    return dwError;
error:

    if (ppszSiteName)
    {
        *ppszSiteName = NULL;
    }
    VMAFD_SAFE_FREE_MEMORY(pszSiteName);
    goto cleanup;
}
Ejemplo n.º 2
0
DWORD
CdcSrvGetDCName(
    PCWSTR pszDomainName,
    PCDC_DC_INFO_W *ppAffinitizedDC
    )
{
    DWORD dwError = 0;
    PCDC_DC_INFO_W pAffinitizedDC = NULL;
    PCDC_DC_INFO_W pAffinitizedDCToFree = NULL;
    DWORD dwAffinitizedSince = 0;
    CDC_DB_ENUM_HA_MODE cdcHAMode = CDC_DB_ENUM_HA_MODE_UNDEFINED;
    PWSTR pszDomainToUse = NULL;
    UINT64 iStart = 0;
    UINT64 iEnd = 0;

    if (!ppAffinitizedDC)
    {
        dwError = ERROR_INVALID_PARAMETER;
        BAIL_ON_VMAFD_ERROR(dwError);
    }

    iStart = VmAfdGetTimeInMilliSec();
    dwError = VmAfSrvGetDomainName(&pszDomainToUse);
    BAIL_ON_VMAFD_ERROR(dwError);

    if (!IsNullOrEmptyString(pszDomainName))
    {
        if (!VmAfdStringIsEqualW(
                            pszDomainName,
                            pszDomainToUse,
                            FALSE
                            )
           )
        {
            dwError = ERROR_INVALID_DOMAINNAME;
            BAIL_ON_VMAFD_ERROR(dwError);
        }
    }

    dwError = CdcRegDbGetHAMode(&cdcHAMode);
    BAIL_ON_VMAFD_ERROR(dwError);

    dwError = CdcDbGetAffinitizedDC(
                          pszDomainToUse,
                          &dwAffinitizedSince,
                          &pAffinitizedDC
                          );
    if (cdcHAMode == CDC_DB_ENUM_HA_MODE_LEGACY || dwError)
    {
        pAffinitizedDCToFree = pAffinitizedDC;
        dwError = VmAfdAllocateMemory(
                                sizeof(CDC_DC_INFO_W),
                                (PVOID *)&pAffinitizedDC
                                );
        BAIL_ON_VMAFD_ERROR(dwError);

        dwError = VmAfSrvGetDCName(&pAffinitizedDC->pszDCName);
        BAIL_ON_VMAFD_ERROR(dwError);

        dwError = VmAfdTrimFQDNTrailingDot(pAffinitizedDC->pszDCName);
        BAIL_ON_VMAFD_ERROR(dwError);

        dwError = VmAfSrvGetDomainName(&pAffinitizedDC->pszDomainName);
        BAIL_ON_VMAFD_ERROR(dwError);

        dwError = CdcRegDbGetSiteName(&pAffinitizedDC->pszDcSiteName);
        BAIL_ON_VMAFD_ERROR(dwError);
    }

    iEnd = VmAfdGetTimeInMilliSec();
    *ppAffinitizedDC = pAffinitizedDC;

cleanup:

    VMAFD_SAFE_FREE_MEMORY(pszDomainToUse);
    if (pAffinitizedDCToFree)
    {
        VmAfdFreeDomainControllerInfoW(pAffinitizedDCToFree);
    }
    return dwError;
error:

    (DWORD)VmAfdAddDCSuperLogEntry(
                            gVmafdGlobals.pLogger,
                            iStart,
                            iEnd,
                            pAffinitizedDC,
                            dwError);

    if (ppAffinitizedDC)
    {
        *ppAffinitizedDC = NULL;
    }
    if (pAffinitizedDC)
    {
        VmAfdFreeDomainControllerInfoW(pAffinitizedDC);
    }

    goto cleanup;
}