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; }
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; }
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; }
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; }
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; }
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 }