summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVMware, Inc <>2013-09-17 20:42:16 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2013-09-22 22:30:01 -0700
commitb81233bd0375e5358a55b387e638e9f569a0cc53 (patch)
treec78477963d2b9987ebc729fa16859e1275702f2e
parentc634402c98c2eb419d111797c39e4907aa35a8eb (diff)
Provide a kill-switch for using vsocket in RpcChannel.
Adding "void RpcChannel_SetBackdoorOnly(void)" API to allow to disable vsocket if needed. Signed-off-by: Dmitry Torokhov <dtor@vmware.com>
-rw-r--r--open-vm-tools/lib/include/vmware/tools/guestrpc.h3
-rw-r--r--open-vm-tools/lib/rpcChannel/rpcChannel.c17
2 files changed, 19 insertions, 1 deletions
diff --git a/open-vm-tools/lib/include/vmware/tools/guestrpc.h b/open-vm-tools/lib/include/vmware/tools/guestrpc.h
index b90e0b25..6180c376 100644
--- a/open-vm-tools/lib/include/vmware/tools/guestrpc.h
+++ b/open-vm-tools/lib/include/vmware/tools/guestrpc.h
@@ -201,6 +201,9 @@ RpcChannel_SendOne(char **reply,
RpcChannel *
RpcChannel_New(void);
+void
+RpcChannel_SetBackdoorOnly(void);
+
G_END_DECLS
/** @} */
diff --git a/open-vm-tools/lib/rpcChannel/rpcChannel.c b/open-vm-tools/lib/rpcChannel/rpcChannel.c
index bfa5e23a..aabb558b 100644
--- a/open-vm-tools/lib/rpcChannel/rpcChannel.c
+++ b/open-vm-tools/lib/rpcChannel/rpcChannel.c
@@ -60,6 +60,7 @@ static RpcChannelCallback gRpcHandlers[] = {
{ "ping", RpcChannelPing, NULL, NULL, NULL, 0 }
};
+static gboolean gUseBackdoorOnly = FALSE;
/**
* Handler for a "ping" message. Does nothing.
@@ -628,6 +629,20 @@ RpcChannel_UnregisterCallback(RpcChannel *chan,
/**
+ * Force to create backdoor channels only.
+ * This provides a kill-switch to disable vsocket channels if needed.
+ * This needs to be called before RpcChannel_New to take effect.
+ */
+
+void
+RpcChannel_SetBackdoorOnly(void)
+{
+ gUseBackdoorOnly = TRUE;
+ Debug(LGPFX "Using vsocket is disabled.\n");
+}
+
+
+/**
* Create an RpcChannel instance using a prefered channel implementation,
* currently this is VSockChannel.
*
@@ -639,7 +654,7 @@ RpcChannel_New(void)
{
RpcChannel *chan;
#if (defined(__linux__) && !defined(USERWORLD)) || defined(_WIN32)
- chan = VSockChannel_New();
+ chan = gUseBackdoorOnly ? BackdoorChannel_New() : VSockChannel_New();
#else
chan = BackdoorChannel_New();
#endif