diff options
author | VMware, Inc <> | 2013-09-17 20:42:16 -0700 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-09-22 22:30:01 -0700 |
commit | b81233bd0375e5358a55b387e638e9f569a0cc53 (patch) | |
tree | c78477963d2b9987ebc729fa16859e1275702f2e | |
parent | c634402c98c2eb419d111797c39e4907aa35a8eb (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.h | 3 | ||||
-rw-r--r-- | open-vm-tools/lib/rpcChannel/rpcChannel.c | 17 |
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 |