--- /dev/null
+/*********************************************************
+ * Copyright (C) 2020 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
+ * by the Free Software Foundation version 2.1 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *********************************************************/
+
+#ifndef _SERVICEDISCOVERY_H_
+#define _SERVICEDISCOVERY_H_
+
+/**
+ * @file serviceDiscovery.h
+ *
+ * Common declarations that aid in sending services information
+ * from 'serviceDiscovery' plugin in 'VMware Tools' to the host.
+ */
+
+
+/*
+ * Namespace DB used for service discovery
+ */
+#define SERVICE_DISCOVERY_NAMESPACE_DB_NAME "com.vmware.vrops.sdmp"
+
+/*
+ * ready - used to identify if data is succesfully written to Namespace DB
+ * signal - signal send by sdmp client for plugin to start data collection
+ */
+#define SERVICE_DISCOVERY_KEY_READY "ready"
+#define SERVICE_DISCOVERY_KEY_SIGNAL "signal"
+
+/*
+ * keys for types of service data collected by plugin.
+ */
+#define SERVICE_DISCOVERY_KEY_PROCESSES "listening-process-info"
+#define SERVICE_DISCOVERY_KEY_CONNECTIONS "connection-info"
+#define SERVICE_DISCOVERY_KEY_PERFORMANCE_METRICS \
+ "listening-process-perf-metrics"
+#define SERVICE_DISCOVERY_KEY_VERSIONS "versions"
+
+/*
+ * keys for types of service data collected by plugin from Windows guest
+ */
+#define SERVICE_DISCOVERY_WIN_KEY_RELATIONSHIP "pid-to-ppid"
+#define SERVICE_DISCOVERY_WIN_KEY_NET "net"
+#define SERVICE_DISCOVERY_WIN_KEY_IIS_PORTS "iis-ports-info"
+
+#endif /* _SERVICEDISCOVERY_H_ */
#include <string.h>
-#include "serviceDiscovery.h"
+#include "serviceDiscoveryInt.h"
#include "vmware.h"
#include "conf.h"
#include "dynbuf.h"
#include "util.h"
#include "vm_atomic.h"
#include "vmcheck.h"
+#include "vmware/guestrpc/serviceDiscovery.h"
#include "vmware/tools/log.h"
#include "vmware/tools/threadPool.h"
#include "vmware/tools/utils.h"
#define NSDB_PRIV_GET_VALUES_CMD "namespace-priv-get-values"
#define NSDB_PRIV_SET_KEYS_CMD "namespace-priv-set-keys"
-/*
- * Namespace DB used for service discovery
- */
-#define SERVICE_DISCOVERY_NAMESPACE_DB_NAME "com.vmware.vrops.sdmp"
-
-/*
- * ready - used to identify if data is succesfully written to Namespace DB
- * signal - signal send by sdmp client for plugin to start data collection
- */
-#define SERVICE_DISCOVERY_KEY_NAME_READY "ready"
-#define SERVICE_DISCOVERY_KEY_NAME_SIGNAL "signal"
#if defined (_WIN32)
-/*
- * keys for types of service data collected by plugin from Windows guest
- */
-#define WIN_KEY_NAME_PROCESSES "listening-process-info"
-#define WIN_KEY_NAME_CONNECTIONS "connection-info"
-#define WIN_KEY_NAME_PERFORMANCE_METRICS "listening-process-perf-metrics"
-#define WIN_KEY_NAME_VERSIONS "versions"
-#define WIN_KEY_NAME_RELATIONSHIP "pid-to-ppid"
-#define WIN_KEY_NAME_NET "net"
-#define WIN_KEY_NAME_IIS_PORTS "iis-ports-info"
+#define SCRIPT_EXTN ".bat"
/*
- * scripts used by plugin to collect from Windows guest
+ * Scripts used by plugin in Windows guests to capture information about
+ * running services.
*/
-#define WIN_SCRIPT_NAME_PROCESSES "get-listening-process-info.bat"
-#define WIN_SCRIPT_NAME_CONNECTIONS "get-connection-info.bat"
-#define WIN_SCRIPT_NAME_PERFORMANCE_METRICS "get-performance-metrics.bat"
-#define WIN_SCRIPT_NAME_VERSIONS "get-versions.bat"
-#define WIN_SCRIPT_NAME_RELATIONSHIP "get-parent-child-rels.bat"
-#define WIN_SCRIPT_NAME_NET "net-share.bat"
-#define WIN_SCRIPT_NAME_IIS_PORTS "get-iis-ports-info.bat"
+#define SERVICE_DISCOVERY_SCRIPT_PERFORMANCE_METRICS \
+ "get-performance-metrics" SCRIPT_EXTN
+#define SERVICE_DISCOVERY_WIN_SCRIPT_RELATIONSHIP "get-parent-child-rels" \
+ SCRIPT_EXTN
+#define SERVICE_DISCOVERY_WIN_SCRIPT_NET "net-share" SCRIPT_EXTN
+#define SERVICE_DISCOVERY_WIN_SCRIPT_IIS_PORTS "get-iis-ports-info" SCRIPT_EXTN
#else
+#define SCRIPT_EXTN ".sh"
+
/*
- * keys for types of service data collected by plugin from Linux guest
+ * Scripts used by plugin in Linux guests to capture information about
+ * running services.
*/
-#define LIN_KEY_NAME_PROCESSES "listening-process-info"
-#define LIN_KEY_NAME_CONNECTIONS "connection-info"
-#define LIN_KEY_NAME_PERFORMANCE_METRICS "listening-process-perf-metrics"
-#define LIN_KEY_NAME_VERSIONS "versions"
+#define SERVICE_DISCOVERY_SCRIPT_PERFORMANCE_METRICS \
+ "get-listening-process-perf-metrics" SCRIPT_EXTN
+#endif
/*
- * scripts used by plugin to collect from Linux guest
+ * Scripts used by plugin in both Windows and Linux guests to capture
+ * information about running services.
*/
-#define LIN_SCRIPT_NAME_PROCESSES "get-listening-process-info.sh"
-#define LIN_SCRIPT_NAME_CONNECTIONS "get-connection-info.sh"
-#define LIN_SCRIPT_NAME_PERFORMANCE_METRICS "get-listening-process-perf-metrics.sh"
-#define LIN_SCRIPT_NAME_VERSIONS "get-versions.sh"
-
-#endif
+#define SERVICE_DISCOVERY_SCRIPT_PROCESSES "get-listening-process-info" \
+ SCRIPT_EXTN
+#define SERVICE_DISCOVERY_SCRIPT_CONNECTIONS "get-connection-info" SCRIPT_EXTN
+#define SERVICE_DISCOVERY_SCRIPT_VERSIONS "get-versions" SCRIPT_EXTN
/*
* Default value for CONFNAME_SERVICE_DISCOVERY_DISABLED setting in
gchar *val;
} KeyNameValue;
-#if defined(_WIN32)
static KeyNameValue gKeyScripts[] = {
- { WIN_KEY_NAME_PROCESSES, WIN_SCRIPT_NAME_PROCESSES },
- { WIN_KEY_NAME_CONNECTIONS, WIN_SCRIPT_NAME_CONNECTIONS },
- { WIN_KEY_NAME_PERFORMANCE_METRICS, WIN_SCRIPT_NAME_PERFORMANCE_METRICS },
- { WIN_KEY_NAME_VERSIONS, WIN_SCRIPT_NAME_VERSIONS },
- { WIN_KEY_NAME_RELATIONSHIP, WIN_SCRIPT_NAME_RELATIONSHIP },
- { WIN_KEY_NAME_IIS_PORTS, WIN_SCRIPT_NAME_IIS_PORTS },
- { WIN_KEY_NAME_NET, WIN_SCRIPT_NAME_NET },
-};
-#else
-static KeyNameValue gKeyScripts[] = {
- { LIN_KEY_NAME_PROCESSES, LIN_SCRIPT_NAME_PROCESSES },
- { LIN_KEY_NAME_CONNECTIONS, LIN_SCRIPT_NAME_CONNECTIONS },
- { LIN_KEY_NAME_PERFORMANCE_METRICS, LIN_SCRIPT_NAME_PERFORMANCE_METRICS },
- { LIN_KEY_NAME_VERSIONS, LIN_SCRIPT_NAME_VERSIONS },
-};
+ { SERVICE_DISCOVERY_KEY_PROCESSES, SERVICE_DISCOVERY_SCRIPT_PROCESSES },
+ { SERVICE_DISCOVERY_KEY_CONNECTIONS,
+ SERVICE_DISCOVERY_SCRIPT_CONNECTIONS },
+ { SERVICE_DISCOVERY_KEY_PERFORMANCE_METRICS,
+ SERVICE_DISCOVERY_SCRIPT_PERFORMANCE_METRICS },
+ { SERVICE_DISCOVERY_KEY_VERSIONS, SERVICE_DISCOVERY_SCRIPT_VERSIONS },
+#if defined(_WIN32)
+ { SERVICE_DISCOVERY_WIN_KEY_RELATIONSHIP,
+ SERVICE_DISCOVERY_WIN_SCRIPT_RELATIONSHIP },
+ { SERVICE_DISCOVERY_WIN_KEY_IIS_PORTS,
+ SERVICE_DISCOVERY_WIN_SCRIPT_IIS_PORTS },
+ { SERVICE_DISCOVERY_WIN_KEY_NET, SERVICE_DISCOVERY_WIN_SCRIPT_NET },
#endif
+};
static GSource *gServiceDiscoveryTimeoutSource = NULL;
static gint64 gLastWriteTime = 0;
/*
* Reset "ready" flag to stop readers until all data is written
*/
- status = WriteData(ctx, SERVICE_DISCOVERY_KEY_NAME_READY, "FALSE", 5);
+ status = WriteData(ctx, SERVICE_DISCOVERY_KEY_READY, "FALSE", 5);
if (!status) {
gLastWriteTime = previousWriteTime;
g_warning("%s: Failed to reset %s flag", __FUNCTION__,
- SERVICE_DISCOVERY_KEY_NAME_READY);
+ SERVICE_DISCOVERY_KEY_READY);
goto out;
}
/*
* Update ready flag
*/
- status = WriteData(ctx, SERVICE_DISCOVERY_KEY_NAME_READY, "TRUE", 4);
+ status = WriteData(ctx, SERVICE_DISCOVERY_KEY_READY, "TRUE", 4);
if (!status) {
g_warning("%s: Failed to update ready flag", __FUNCTION__);
}
/*
* Read signal from Namespace DB
*/
- if (!ReadData(ctx, SERVICE_DISCOVERY_KEY_NAME_SIGNAL, &signal, &signalLen)) {
+ if (!ReadData(ctx, SERVICE_DISCOVERY_KEY_SIGNAL, &signal, &signalLen)) {
g_debug("%s: Failed to read necessary information from Namespace DB\n",
__FUNCTION__);
} else {