Esempio n. 1
0
DWORD
VmDnsForwarderInit(
    PVMDNS_FORWARDER_CONTEXT*   ppForwarder
    )
{
    DWORD dwError = ERROR_SUCCESS;
    PVMDNS_FORWARDER_CONTEXT pForwarderContext = NULL;

    BAIL_ON_VMDNS_INVALID_POINTER(ppForwarder, dwError);

    dwError = VmDnsAllocateMemory(
                        sizeof(VMDNS_FORWARDER_CONTEXT),
                        (PVOID*)&pForwarderContext);
    BAIL_ON_VMDNS_ERROR(dwError);

    dwError = VmDnsAllocateRWLock(&pForwarderContext->pLock);
    BAIL_ON_VMDNS_ERROR(dwError);

    *ppForwarder = pForwarderContext;

cleanup:
    return dwError;

error:

    if (pForwarderContext)
    {
        VmDnsForwarderCleanup(pForwarderContext);
    }

    goto cleanup;
}
Esempio n. 2
0
DWORD
VmDnsCacheInitialize(
    PVMDNS_CACHE_CONTEXT    *ppContext
    )
{
    DWORD dwError = 0;
    PVMDNS_CACHE_CONTEXT pContext = NULL;

    dwError = VmDnsAllocateMemory(
                    sizeof(VMDNS_CACHE_CONTEXT),
                    (PVOID*)&pContext);
    BAIL_ON_VMDNS_ERROR(dwError);

    dwError = VmDnsZoneListInit(&pContext->pZoneList);
    BAIL_ON_VMDNS_ERROR(dwError);

    dwError = VmDnsCacheInitRefreshThread(pContext);
    BAIL_ON_VMDNS_ERROR(dwError);

    dwError = VmDnsAllocateRWLock(&pContext->pLock);
    BAIL_ON_VMDNS_ERROR(dwError);

    dwError = VmDnsCreateThread(
                    pContext->pRefreshThread,
                    FALSE,
                    VmDnsCacheRefreshThread,
                    pContext);
     BAIL_ON_VMDNS_ERROR(dwError);

     *ppContext = pContext;

cleanup:
    return dwError;

error:
    VmDnsCacheCleanup(pContext);
    goto cleanup;
}