VOID VmDnsRpcFreeZoneInfo( PVMDNS_ZONE_INFO pZoneInfo ) { if (pZoneInfo) { VmDnsRpcFreeMemory(pZoneInfo->pszName); VmDnsRpcFreeMemory(pZoneInfo->pszPrimaryDnsSrvName); VmDnsRpcFreeMemory(pZoneInfo->pszRName); VmDnsRpcFreeMemory(pZoneInfo); } }
DWORD VmDnsRpcDuplicatePtrRecord( PVMDNS_RECORD pSrc, PVMDNS_RECORD *ppDest ) { DWORD dwError = 0; PVMDNS_RECORD pRecord = NULL; BAIL_ON_VMDNS_INVALID_POINTER(pSrc, dwError); BAIL_ON_VMDNS_INVALID_POINTER(ppDest, dwError); dwError = VmDnsRpcAllocateMemory(sizeof(VMDNS_RECORD), (PVOID*)&pRecord); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsRpcCopyPtrRecord(pSrc, pRecord); BAIL_ON_VMDNS_ERROR(dwError); *ppDest = pRecord; pRecord = NULL; cleanup: return dwError; error: VmDnsRpcClearPtrRecord(pRecord); VmDnsRpcFreeMemory(pRecord); if (ppDest) { *ppDest = NULL; } goto cleanup; }
VMDNS_API VOID VmDnsFreeRecord( PVMDNS_RECORD pRecord ) { if (pRecord) { VmDnsRpcClearRecord(pRecord); VmDnsRpcFreeMemory(pRecord); } }
DWORD VmDnsRpcCopyZoneInfo( PVMDNS_ZONE_INFO pZoneInfoSrc, PVMDNS_ZONE_INFO pZoneInfoDest ) { DWORD dwError = ERROR_SUCCESS; BAIL_ON_VMDNS_INVALID_POINTER(pZoneInfoSrc, dwError); BAIL_ON_VMDNS_INVALID_POINTER(pZoneInfoDest, dwError); dwError = VmDnsRpcAllocateStringA(pZoneInfoSrc->pszName, &pZoneInfoDest->pszName); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsRpcAllocateStringA(pZoneInfoSrc->pszPrimaryDnsSrvName, &pZoneInfoDest->pszPrimaryDnsSrvName); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsRpcAllocateStringA(pZoneInfoSrc->pszRName, &pZoneInfoDest->pszRName); BAIL_ON_VMDNS_ERROR(dwError); pZoneInfoDest->dwFlags = pZoneInfoSrc->dwFlags; pZoneInfoDest->dwZoneType = pZoneInfoSrc->dwZoneType; pZoneInfoDest->expire = pZoneInfoSrc->expire; pZoneInfoDest->minimum = pZoneInfoSrc->minimum; pZoneInfoDest->refreshInterval = pZoneInfoSrc->refreshInterval; pZoneInfoDest->retryInterval = pZoneInfoSrc->retryInterval; pZoneInfoDest->serial = pZoneInfoSrc->serial; cleanup: return dwError; error: VmDnsRpcFreeMemory(pZoneInfoDest->pszName); VmDnsRpcFreeMemory(pZoneInfoDest->pszPrimaryDnsSrvName); VmDnsRpcFreeMemory(pZoneInfoDest->pszRName); VmDnsRpcFreeMemory(pZoneInfoDest); goto cleanup; }
VOID VmDnsRpcFreeRecordArray( PVMDNS_RECORD_ARRAY pRecordArray ) { DWORD idx = 0; if (pRecordArray) { for (; idx < pRecordArray->dwCount; ++idx) { VmDnsRpcClearRecord(&pRecordArray->Records[idx]); } VmDnsRpcFreeMemory(pRecordArray); } }
static VOID VmDnsRpcFreeForwarders( PVMDNS_FORWARDERS pForwarder ) { DWORD idx = 0; if (pForwarder) { for (; idx < pForwarder->dwCount; ++idx) { VmDnsRpcFreeString(&pForwarder->ppszName[idx]); } VmDnsRpcFreeMemory(pForwarder); } }