open-vm-tools 12.0.5
Data Structures | Macros | Typedefs | Enumerations | Functions
guestrpc.h File Reference
#include <glib.h>
#include "vmware/tools/utils.h"
Include dependency graph for guestrpc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  RpcInData
 
struct  RpcChannelCallback
 

Macros

#define RPCIN_SETRETVALS   RpcChannel_SetRetVals
 
#define RPCIN_SETRETVALSF   RpcChannel_SetRetValsF
 
#define RPCCHANNEL_SEND_PERMISSION_DENIED   "Permission denied"
 

Typedefs

typedef struct _RpcChannel RpcChannel
 
typedef struct RpcInData RpcInData
 
typedef enum RpcChannelType RpcChannelType
 
typedef gboolean(* RpcIn_Callback) (RpcInData *data)
 
typedef struct RpcChannelCallback RpcChannelCallback
 
typedef void(* RpcChannelResetCb) (RpcChannel *chan, gboolean success, gpointer data)
 
typedef void(* RpcChannelFailureCb) (gpointer _state)
 

Enumerations

enum  RpcChannelType { RPCCHANNEL_TYPE_INACTIVE , RPCCHANNEL_TYPE_BKDOOR , RPCCHANNEL_TYPE_PRIV_VSOCK , RPCCHANNEL_TYPE_UNPRIV_VSOCK }
 

Functions

gboolean RpcChannel_Start (RpcChannel *chan)
 
void RpcChannel_Stop (RpcChannel *chan)
 
RpcChannelType RpcChannel_GetType (RpcChannel *chan)
 
gboolean RpcChannel_Send (RpcChannel *chan, char const *data, size_t dataLen, char **result, size_t *resultLen)
 
void RpcChannel_Free (void *ptr)
 
gboolean RpcChannel_BuildXdrCommand (const char *cmd, void *xdrProc, void *xdrData, char **result, size_t *resultLen)
 
gboolean RpcChannel_Dispatch (RpcInData *data)
 
void RpcChannel_Setup (RpcChannel *chan, const gchar *appName, GMainContext *mainCtx, gpointer appCtx, RpcChannelResetCb resetCb, gpointer resetData, RpcChannelFailureCb failureCb, guint maxFailures)
 
void RpcChannel_RegisterCallback (RpcChannel *chan, RpcChannelCallback *rpc)
 
void RpcChannel_UnregisterCallback (RpcChannel *chan, RpcChannelCallback *rpc)
 
RpcChannel * RpcChannel_Create (void)
 
void RpcChannel_Destroy (RpcChannel *chan)
 
gboolean RpcChannel_SetRetVals (RpcInData *data, char const *result, gboolean retVal)
 
gboolean RpcChannel_SetRetValsF (RpcInData *data, char *result, gboolean retVal)
 
gboolean RpcChannel_SendOneRaw (const char *data, size_t dataLen, char **result, size_t *resultLen)
 
gboolean RpcChannel_SendOne (char **reply, size_t *repLen, const char *reqFmt,...)
 
RpcChannel * RpcChannel_New (void)
 
void RpcChannel_SetBackdoorOnly (void)
 
RpcChannel * BackdoorChannel_New (void)
 

Detailed Description

Defines the interface between applications and the underlying GuestRPC channel. The goal is to have an abstraction so applications can run over the backdoor, vSockets or TCP/IP sockets by just picking up the desired channel at runtime, without the need to modify the code.

For this reason, the behavior of all channels is modeled after the RpcIn channel currently used in Tools, so the socket-based channels won't provide much better functionality than what the backdoor provides (aside from being interrupt-based rather than poll-based).