DWORD VmDnsSerializeDnsSrvRecord( VMDNS_RECORD_DATA Data, PVMDNS_MESSAGE_BUFFER pVmDnsBuffer ) { DWORD dwError = 0; UINT16 uSize = 0; if (!pVmDnsBuffer) { dwError = ERROR_INVALID_PARAMETER; BAIL_ON_VMDNS_ERROR(dwError); } dwError = VmDnsSrvGetRDataLength( Data, &uSize, pVmDnsBuffer->bTokenizeDomainName ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT16ToBuffer( uSize, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT16ToBuffer( Data.SRV.wPriority, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT16ToBuffer( Data.SRV.wWeight, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT16ToBuffer( Data.SRV.wPort, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteDomainNameToBuffer( Data.SRV.pNameTarget, pVmDnsBuffer, pVmDnsBuffer->bTokenizeDomainName ); BAIL_ON_VMDNS_ERROR(dwError); cleanup: return dwError; error: goto cleanup; }
DWORD VmDnsWriteRecordToBuffer( PVMDNS_RECORD pDnsRecord, PVMDNS_MESSAGE_BUFFER pVmDnsBuffer ) { DWORD dwError = 0; DWORD dwIndex = 0; if (!pDnsRecord || !pVmDnsBuffer) { dwError = ERROR_INVALID_PARAMETER; BAIL_ON_VMDNS_ERROR(dwError); } dwError = VmDnsWriteDomainNameToBuffer( pDnsRecord->pszName, pVmDnsBuffer, pVmDnsBuffer->bTokenizeDomainName ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT16ToBuffer( pDnsRecord->dwType, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT16ToBuffer( pDnsRecord->iClass, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); dwError = VmDnsWriteUINT32ToBuffer( pDnsRecord->dwTtl, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); for (; dwIndex < gRecordMethodMapSize; ++dwIndex) { if (pDnsRecord->dwType == gRecordMethods[dwIndex].type) { dwError = gRecordMethods[dwIndex].pfnSerialize( pDnsRecord->Data, pVmDnsBuffer ); BAIL_ON_VMDNS_ERROR(dwError); break; } } cleanup: return dwError; error: goto cleanup; }