/*********************************************************
- * Copyright (C) 2008-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2008-2016,2022 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
*/
#include <stdlib.h>
+#include <string.h>
#include "vm_basic_defs.h"
#include "deployPkgInt.h"
+#include "vmcheck.h"
#include "vmware/tools/plugin.h"
#include "vmware/tools/utils.h"
NULL
};
- RpcChannelCallback rpcs[] = {
- { "deployPkg.begin", DeployPkg_TcloBegin, NULL, NULL, NULL, 0 },
- { "deployPkg.deploy", DeployPkg_TcloDeploy, NULL, NULL, NULL, 0 }
- };
- ToolsAppReg regs[] = {
- { TOOLS_APP_GUESTRPC, VMTools_WrapArray(rpcs, sizeof *rpcs, ARRAYSIZE(rpcs)) }
- };
+ uint32 vmxVersion = 0;
+ uint32 vmxType = VMX_TYPE_UNSET;
+
+ /*
+ * Return NULL to disable the plugin if not running in a VMware VM.
+ */
+ if (!ctx->isVMware) {
+ g_info("%s: Not running in a VMware VM.\n", __FUNCTION__);
+ return NULL;
+ }
+
+ /*
+ * Return NULL to disable the plugin if VM is not running on ESX host.
+ */
+ if (!VmCheck_GetVersion(&vmxVersion, &vmxType) ||
+ vmxType != VMX_TYPE_SCALABLE_SERVER) {
+ g_info("%s, VM is not running on ESX host.\n", __FUNCTION__);
+ return NULL;
+ }
+
+ /*
+ * Return NULL to disable the plugin if not running in vmsvc daemon.
+ */
+ if (!TOOLS_IS_MAIN_SERVICE(ctx)) {
+ g_info("%s: Not running in vmsvc daemon: container name='%s'.\n",
+ __FUNCTION__, ctx->name);
+ return NULL;
+ }
+
+ /*
+ * RpcChannel is neccessary for DeployPkg plugin.
+ */
+ if (ctx->rpc != NULL) {
+ RpcChannelCallback rpcs[] = {
+ { "deployPkg.begin", DeployPkg_TcloBegin, NULL, NULL, NULL, 0 },
+ { "deployPkg.deploy", DeployPkg_TcloDeploy, NULL, NULL, NULL, 0 }
+ };
+ ToolsAppReg regs[] = {
+ { TOOLS_APP_GUESTRPC, VMTools_WrapArray(rpcs, sizeof *rpcs, ARRAYSIZE(rpcs)) }
+ };
+
+ srand(time(NULL));
+ regData.regs = VMTools_WrapArray(regs, sizeof *regs, ARRAYSIZE(regs));
- srand(time(NULL));
- regData.regs = VMTools_WrapArray(regs, sizeof *regs, ARRAYSIZE(regs));
+ return ®Data;
+ } else {
+ g_info("%s: Do not load DeployPkg plugin because RpcChannel is unavailable.\n",
+ __FUNCTION__);
+ }
- return ®Data;
+ return NULL;
}