/* VmbusChannelRequestOffers - Send a request to get all our pending offers.  */
int VmbusChannelRequestOffers(void)
/* VmbusChannelRequestOffers - Send a request to get all our pending offers.  */
int VmbusChannelRequestOffers(void)
{
	struct vmbus_channel_message_header *msg;
	struct vmbus_channel_msginfo *msgInfo;
	int ret;
	DPRINT_ENTER(VMBUS);
	msgInfo = kmalloc(sizeof(*msgInfo) +
			  sizeof(struct vmbus_channel_message_header),
			  GFP_KERNEL);
	ASSERT(msgInfo != NULL);
	msgInfo->WaitEvent = osd_WaitEventCreate();
	msg = (struct vmbus_channel_message_header *)msgInfo->Msg;
	msg->MessageType = ChannelMessageRequestOffers;
	ret = VmbusPostMessage(msg,
			       sizeof(struct vmbus_channel_message_header));
	if (ret != 0) {
		DPRINT_ERR(VMBUS, "Unable to request offers - %d", ret);
		goto Cleanup;
	}
Cleanup:
	if (msgInfo) {
		kfree(msgInfo->WaitEvent);
		kfree(msgInfo);
	}
	DPRINT_EXIT(VMBUS);
	return ret;
}