Esempio n. 1
0
DWORD
VmDirGetMaxDbSizeMb(
    PDWORD pMaxDbSizeMb
    )
{
    DWORD keyValue = 0;
    DWORD dwError = 0;

    PVMDIR_CONFIG_CONNECTION_HANDLE pCfgHandle = NULL;

    dwError = VmDirRegConfigHandleOpen(&pCfgHandle);
    BAIL_ON_VMDIR_ERROR(dwError);

    dwError = VmDirRegConfigGetDword(
                            pCfgHandle,
                            VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
                            VMDIR_REG_KEY_MAXIMUM_DB_SIZE_MB,
                            &keyValue);

    BAIL_ON_VMDIR_ERROR(dwError);
    *pMaxDbSizeMb = keyValue;

cleanup:
    if (pCfgHandle)
    {
        VmDirRegConfigHandleClose(pCfgHandle);
    }
    return dwError;
error:
    goto cleanup;
}
Esempio n. 2
0
DWORD
VmDirGetMdbChkptInterval(
    DWORD *pdwMdbChkptInterval
    )
{
    DWORD keyValue = 0;
    DWORD dwError = 0;
    PVMDIR_CONFIG_CONNECTION_HANDLE pCfgHandle = NULL;

    if (pdwMdbChkptInterval==NULL)
    {
        dwError = VMDIR_ERROR_INVALID_PARAMETER;
        BAIL_ON_VMDIR_ERROR(dwError);
    }

    *pdwMdbChkptInterval = VMDIR_REG_KEY_MDB_CHKPT_INTERVAL_DEFAULT;

    dwError = VmDirRegConfigHandleOpen(&pCfgHandle);
    BAIL_ON_VMDIR_ERROR(dwError);

    dwError = VmDirRegConfigGetDword(
                            pCfgHandle,
                            VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
                            VMDIR_REG_KEY_MDB_CHKPT_INTERVAL,
                            &keyValue);
    BAIL_ON_VMDIR_ERROR(dwError);

    if (keyValue < VMDIR_REG_KEY_MDB_CHKPT_INTERVAL_MIN ||
        keyValue > VMDIR_REG_KEY_MDB_CHKPT_INTERVAL_MAX)
    {
        dwError = VMDIR_ERROR_INVALID_PARAMETER;
        BAIL_ON_VMDIR_ERROR(dwError);
    }

    *pdwMdbChkptInterval = keyValue;

cleanup:
    if (pCfgHandle)
    {
        VmDirRegConfigHandleClose(pCfgHandle);
    }
    return dwError;

error:
    goto cleanup;
}
Esempio n. 3
0
DWORD
VmDirGetMdbWalEnable(
    BOOLEAN *pbMdbEnableWal
    )
{
    DWORD keyValue = 1;
    DWORD dwError = 0;
    PVMDIR_CONFIG_CONNECTION_HANDLE pCfgHandle = NULL;

    if (pbMdbEnableWal==NULL)
    {
        dwError = VMDIR_ERROR_INVALID_PARAMETER;
        BAIL_ON_VMDIR_ERROR(dwError);
    }

    *pbMdbEnableWal = FALSE;

    dwError = VmDirRegConfigHandleOpen(&pCfgHandle);
    BAIL_ON_VMDIR_ERROR(dwError);

    dwError = VmDirRegConfigGetDword(
                            pCfgHandle,
                            VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
                            VMDIR_REG_KEY_MDB_ENABLE_WAL,
                            &keyValue);
    BAIL_ON_VMDIR_ERROR(dwError);

    *pbMdbEnableWal = (BOOLEAN)(keyValue!=0);

cleanup:
    if (pCfgHandle)
    {
        VmDirRegConfigHandleClose(pCfgHandle);
    }
    return dwError;

error:
    goto cleanup;
}
Esempio n. 4
0
DWORD
VmDirGetLdapCopyEnable(
    BOOLEAN *pbLdapCopyEnable
    )
{
    DWORD keyValue = 0;
    DWORD dwError = 0;
    PVMDIR_CONFIG_CONNECTION_HANDLE pCfgHandle = NULL;

    if (pbLdapCopyEnable == NULL)
    {
        BAIL_WITH_VMDIR_ERROR(dwError, VMDIR_ERROR_INVALID_PARAMETER);
    }

    *pbLdapCopyEnable = FALSE;

    dwError = VmDirRegConfigHandleOpen(&pCfgHandle);
    BAIL_ON_VMDIR_ERROR(dwError);

    dwError = VmDirRegConfigGetDword(
                            pCfgHandle,
                            VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
                            VMDIR_REG_KEY_LDAP_COPY_ENABLE,
                            &keyValue);
    BAIL_ON_VMDIR_ERROR(dwError);

    *pbLdapCopyEnable = (BOOLEAN)(keyValue!=0);

cleanup:
    if (pCfgHandle)
    {
        VmDirRegConfigHandleClose(pCfgHandle);
    }
    return dwError;

error:
    goto cleanup;
}
Esempio n. 5
0
static
DWORD
VmDirRegGetConfig(
    PCSTR               pszSubKey,
    PVMDIR_CONFIG_ENTRY pCfgTable,
    DWORD               dwNumEntries
    )
{
    DWORD dwError = 0;
    DWORD iEntry = 0;
    PVMDIR_CONFIG_CONNECTION_HANDLE pCfgHandle = NULL;

    dwError = VmDirRegConfigHandleOpen(&pCfgHandle);
    BAIL_ON_VMDIR_ERROR(dwError);

    for (; iEntry < dwNumEntries; iEntry++)
    {
        PVMDIR_CONFIG_ENTRY pEntry = &pCfgTable[iEntry];

        switch (pEntry->Type)
        {
            case VMDIR_CONFIG_VALUE_TYPE_STRING:

                dwError = VmDirRegConfigGetString(
                            pCfgHandle,
                            pszSubKey,
                            pEntry->pszName,
                            &pEntry->pszValue);
                if (dwError != 0)
                {   // use default value
                    dwError = VmDirAllocateStringA(
                                    pEntry->pszDefault,
                                    &pEntry->pszValue);
                    BAIL_ON_VMDIR_ERROR(dwError);
                }

                break;

            case VMDIR_CONFIG_VALUE_TYPE_MULTISTRING:

                dwError = VmDirRegConfigGetMultiString(
                            pCfgHandle,
                            pszSubKey,
                            pEntry->pszName,
                            &pEntry->pszValue);
                if (dwError != 0)
                {   // use default value

                    dwError = VmDirAllocateMultiStringA(
                                    pEntry->pszDefault,
                                    &pEntry->pszValue);
                    BAIL_ON_VMDIR_ERROR(dwError);
                }
                break;


            case VMDIR_CONFIG_VALUE_TYPE_DWORD:

                dwError = VmDirRegConfigGetDword(
                            pCfgHandle,
                            pszSubKey,
                            pEntry->pszName,
                            &pEntry->dwValue);
                if (dwError != 0)
                {   // use default value
                    pEntry->dwValue = pEntry->dwDefault;
                }

                if (pCfgTable[iEntry].dwValue > pCfgTable[iEntry].dwMax)
                {
                    VmDirLog(LDAP_DEBUG_ANY,
                            "Config [%s] value (%d) too big, using (%d).",
                            pEntry->pszName,
                            pEntry->dwValue,
                            pEntry->dwMax);

                    pEntry->dwValue = pEntry->dwMax;

                }

                if (pEntry->dwValue < pEntry->dwMin)
                {
                    VmDirLog(
                            LDAP_DEBUG_ANY,
                            "Config [%s] value (%d) too small, using (%d).",
                            pEntry->pszName,
                            pEntry->dwValue,
                            pEntry->dwMin);

                    pEntry->dwValue = pEntry->dwMin;
                }

                break;

            case VMDIR_CONFIG_VALUE_TYPE_BOOLEAN:

                dwError = VmDirRegConfigGetDword(
                            pCfgHandle,
                            pszSubKey,
                            pEntry->pszName,
                            &pEntry->dwValue);

                if (dwError != 0)
                {   // use default value
                    pEntry->dwValue = pEntry->dwDefault;
                }

                pEntry->dwValue = pEntry->dwValue == 0 ? FALSE : TRUE;

                break;

            default:

                VmDirLog(
                        LDAP_DEBUG_ANY,
                        "VmDirRegConfigProcess key [%s] type (%d) not supported.",
                        pEntry->pszName,
                        pEntry->Type);

                break;
        }
    }

    dwError = 0;

cleanup:

    if (pCfgHandle)
    {
        VmDirRegConfigHandleClose(pCfgHandle);
    }

    return dwError;

error:

    goto cleanup;
}
Esempio n. 6
0
DWORD
_VmDirDbCpReadRegistry(
    PDWORD pdwCopyDbWritesMin,
    PDWORD pdwCopyDbIntervalInSec,
    PDWORD pdwCopyDbBlockWriteInSec
    )
{
#ifndef WIN32
    DWORD dwError = 0;
    DWORD dwValue = 0;
    PSTR  pszLocalErrorMsg = NULL;
    PVMDIR_CONFIG_CONNECTION_HANDLE pCfgHandle = NULL;

    dwError = VmDirRegConfigHandleOpen(&pCfgHandle);
    BAIL_ON_VMDIR_ERROR_WITH_MSG(dwError, (pszLocalErrorMsg),
      "_VmDirDbCpReadRegistry: VmDirRegConfigHandleOpen error %d", dwError);

    dwError = VmDirRegConfigGetDword(pCfgHandle, VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
            VMDIR_REG_KEY_COPY_DB_INTERVAL_IN_SEC, &dwValue);
    if (dwError)
    {
        if (dwError != LWREG_ERROR_NO_SUCH_KEY_OR_VALUE)
        {
            VMDIR_LOG_ERROR(VMDIR_LOG_MASK_ALL, "_VmDirDbCpReadRegistry %s error %d",
                  VMDIR_REG_KEY_COPY_DB_INTERVAL_IN_SEC, dwError);
        }
    } else
    {
        *pdwCopyDbIntervalInSec = dwValue;
    }

    dwError = VmDirRegConfigGetDword(pCfgHandle, VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
                VMDIR_REG_KEY_COPY_DB_WRITES_MIN, &dwValue);
    if (dwError)
    {
        if (dwError != LWREG_ERROR_NO_SUCH_KEY_OR_VALUE)
        {
            VMDIR_LOG_ERROR(VMDIR_LOG_MASK_ALL, "_VmDirDbCpReadRegistry %s error %d",
                  VMDIR_REG_KEY_COPY_DB_WRITES_MIN, dwError);
        }
    } else
    {
        *pdwCopyDbWritesMin = dwValue;
    }

    dwError = VmDirRegConfigGetDword(pCfgHandle, VMDIR_CONFIG_PARAMETER_PARAMS_KEY_PATH,
            VMDIR_REG_KEY_COPY_DB_BLOCK_WRITE_IN_SEC, &dwValue);
    if (dwError)
    {
        if (dwError != LWREG_ERROR_NO_SUCH_KEY_OR_VALUE)
        {
            VMDIR_LOG_ERROR(VMDIR_LOG_MASK_ALL, "_VmDirDbCpReadRegistry %s error %d",
                  VMDIR_REG_KEY_COPY_DB_BLOCK_WRITE_IN_SEC, dwError);
        }
    } else
    {
        *pdwCopyDbBlockWriteInSec = dwValue;
    }

cleanup:
    if (pCfgHandle)
    {
        VmDirRegConfigHandleClose(pCfgHandle);
    }
    VMDIR_SAFE_FREE_MEMORY(pszLocalErrorMsg);
    return dwError;

error:
    VMDIR_LOG_ERROR(VMDIR_LOG_MASK_ALL, "%s", VDIR_SAFE_STRING(pszLocalErrorMsg));
    goto cleanup;
#else
    return 0;
#endif
}