HGFS_ASYNC_IOREQ_SHMEM,
HGFS_ASYNC_IOREQ_GET_PAGES,
HGFS_ASYNC_IOREP,
-} HgfsAsyncReplyFlags;
+} HgfsTransportReplyType;
typedef enum {
HGFS_TH_REP_GET_PAGES,
HGFS_TH_REQUEST,
HGFS_TH_TERMINATE_SESSION,
-} HgfsTransportPacketType;
+} HgfsTransportRequestType;
#define HGFS_VMCI_TRANSPORT_ERROR (VMCI_ERROR_CLIENT_MIN - 1)
#define HGFS_VMCI_VERSION_MISMATCH (VMCI_ERROR_CLIENT_MIN - 2)
#include "vmware_pack_begin.h"
struct HgfsVmciHeaderNode {
uint32 version; /* Version number */
- HgfsTransportPacketType pktType; /* Type of packet */
+ union {
+ HgfsTransportRequestType pktType; /* Type of packet for client to server */
+ HgfsTransportReplyType replyType; /* Type of packet for server to client */
+ };
}
#include "vmware_pack_end.h"
HgfsVmciHeaderNode;
typedef
#include "vmware_pack_begin.h"
struct HgfsVmciAsyncReply {
- uint32 version;
- HgfsAsyncReplyFlags pktType;
+ HgfsVmciHeaderNode node; /* Node: version, type etc. */
union {
HgfsVmciAsyncResponse response;
HgfsVmciAsyncShmem shmem;
VMCIDatagram *dg) // IN: datagram
{
HgfsVmciAsyncReply *reply = (HgfsVmciAsyncReply *)VMCI_DG_PAYLOAD(dg);
+ HgfsVmciHeaderNode *replyNode = &reply->node;
HgfsTransportChannel *channel;
LOG(10, (KERN_WARNING "Received VMCI channel Callback \n"));
- if (reply->version != HGFS_VMCI_VERSION_1) {
+ if (replyNode->version != HGFS_VMCI_VERSION_1) {
return HGFS_VMCI_VERSION_MISMATCH;
}
- switch (reply->pktType) {
+ switch (replyNode->pktType) {
case HGFS_ASYNC_IOREP:
LOG(10, (KERN_WARNING "Received ID%"FMT64"x \n", reply->response.id));