static DWORD CdcVmafdHeartbeatPing( PWSTR pwszDCName, PWSTR pwszAccount, PWSTR pwszPassword, PWSTR pwszDomainName, PBOOL pbIsAlive ) { DWORD dwError = 0; PSTR pszUPN = NULL; PSTR pszAccount = NULL; PSTR pszDomainName = NULL; PWSTR pwszUPN = NULL; BOOL bIsAlive = FALSE; PVMAFD_SERVER pServer = NULL; PVMAFD_HB_STATUS_W pHeartbeatStatus = NULL; if (IsNullOrEmptyString(pwszDCName) || IsNullOrEmptyString(pwszAccount) || IsNullOrEmptyString(pwszPassword) || IsNullOrEmptyString(pwszDomainName) || !pbIsAlive ) { dwError = ERROR_INVALID_PARAMETER; BAIL_ON_VMAFD_ERROR(dwError); } dwError = VmAfdAllocateStringAFromW( pwszAccount, &pszAccount ); BAIL_ON_VMAFD_ERROR(dwError); dwError = VmAfdAllocateStringAFromW( pwszDomainName, &pszDomainName ); BAIL_ON_VMAFD_ERROR(dwError); dwError = VmAfdAllocateStringPrintf( &pszUPN, "%s@%s", pszAccount, pszDomainName ); BAIL_ON_VMAFD_ERROR(dwError); dwError = VmAfdAllocateStringWFromA( pszUPN, &pwszUPN ); BAIL_ON_VMAFD_ERROR(dwError); dwError = VmAfdOpenServerW( pwszDCName, pwszUPN, pwszPassword, &pServer ); BAIL_ON_VMAFD_ERROR(dwError); dwError = VmAfdGetHeartbeatStatusW( pServer, &pHeartbeatStatus ); BAIL_ON_VMAFD_ERROR(dwError); bIsAlive = pHeartbeatStatus->bIsAlive? TRUE: FALSE; *pbIsAlive = bIsAlive; cleanup: if (pServer) { VmAfdCloseServer(pServer); } if (pHeartbeatStatus) { VmAfdFreeHeartbeatStatusW(pHeartbeatStatus); } VMAFD_SAFE_FREE_MEMORY(pszUPN); VMAFD_SAFE_FREE_MEMORY(pwszUPN); VMAFD_SAFE_FREE_MEMORY(pszAccount); VMAFD_SAFE_FREE_MEMORY(pszDomainName); return dwError; error: if (pbIsAlive) { *pbIsAlive = FALSE; } VmAfdLog(VMAFD_DEBUG_ANY, "Failed to get heartbeat Status due to Error: %d", dwError ); goto cleanup; }
JNIEXPORT jint JNICALL Java_com_vmware_identity_cdc_CdcAdapter_VmAfdOpenServerW( JNIEnv *env, jobject clazz, jstring jServerName, jstring jUserName, jstring jPassword, jobject jpServer ) { DWORD dwError = 0; PVMAFD_SERVER pServer = NULL; PCWSTR pwszServerName = NULL; PCWSTR pwszUserName = NULL; PCWSTR pwszPassword = NULL; #ifndef _WIN32 setlocale (LC_ALL, ""); #endif if (jpServer == NULL) { dwError = ERROR_INVALID_PARAMETER; BAIL_ON_ERROR(dwError); } if (jServerName != NULL) { pwszServerName = (*env)->GetStringChars(env, jServerName, NULL); } if (jUserName != NULL) { pwszUserName = (*env)->GetStringChars(env, jUserName, NULL); } if (jPassword != NULL) { pwszPassword = (*env)->GetStringChars(env, jPassword, NULL); } dwError = VmAfdOpenServerW( pwszServerName, pwszUserName, pwszPassword, &pServer ); BAIL_ON_ERROR(dwError); dwError = JniSetPointer(env, jpServer, (PVOID)pServer); BAIL_ON_ERROR(dwError); cleanup: if (pwszServerName) { (*env)->ReleaseStringChars(env, jServerName, pwszServerName); } if (pwszUserName) { (*env)->ReleaseStringChars(env, jUserName, pwszUserName); } if (pwszPassword) { (*env)->ReleaseStringChars(env, jPassword, pwszPassword); } return dwError; error: if (pServer) { VmAfdCloseServer(pServer); } goto cleanup; }