Removed unused jar.
[public/netxms.git] / include / nms_agent.h
CommitLineData
cbcaf8c8 1/*
7ac71e60 2** NetXMS - Network Management System
f3387429 3** Copyright (C) 2003-2012 Victor Kirhenshtein
cbcaf8c8
VK
4**
5** This program is free software; you can redistribute it and/or modify
68f384ea
VK
6** it under the terms of the GNU Lesser General Public License as published by
7** the Free Software Foundation; either version 3 of the License, or
cbcaf8c8
VK
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
68f384ea 15** You should have received a copy of the GNU Lesser General Public License
cbcaf8c8
VK
16** along with this program; if not, write to the Free Software
17** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18**
456d5d1c 19** File: nms_agent.h
cbcaf8c8
VK
20**
21**/
22
23#ifndef _nms_agent_h_
24#define _nms_agent_h_
25
adc00755 26#include <nms_common.h>
64584976 27#include <nms_util.h>
e6c91aac 28#include <nxconfig.h>
6827d635 29
acc04d96
VK
30/**
31 * Initialization function declaration macro
32 */
a0a945fb 33#if defined(_STATIC_AGENT) || defined(_NETWARE)
e6c91aac 34#define DECLARE_SUBAGENT_ENTRY_POINT(name) extern "C" BOOL NxSubAgentRegister_##name(NETXMS_SUBAGENT_INFO **ppInfo, Config *config)
a0a945fb 35#else
b5138dfb 36#ifdef _WIN32
a0a945fb 37#define DECLSPEC_EXPORT __declspec(dllexport) __cdecl
b5138dfb
VK
38#else
39#define DECLSPEC_EXPORT
40#endif
e6c91aac 41#define DECLARE_SUBAGENT_ENTRY_POINT(name) extern "C" BOOL DECLSPEC_EXPORT NxSubAgentRegister(NETXMS_SUBAGENT_INFO **ppInfo, Config *config)
b5138dfb
VK
42#endif
43
44
cbcaf8c8
VK
45//
46// Some constants
47//
48
49#define AGENT_LISTEN_PORT 4700
deaa4491 50#define AGENT_PROTOCOL_VERSION 2
cbcaf8c8 51#define MAX_RESULT_LENGTH 256
e22f1644
VK
52#define MAX_CMD_LEN 256
53#define COMMAND_TIMEOUT 60
47e0446b 54#define MAX_SUBAGENT_NAME 64
cbcaf8c8
VK
55
56
6ca3b41c
VK
57//
58// Agent policy types
59//
60
61#define AGENT_POLICY_CONFIG 1
f47c176c 62#define AGENT_POLICY_LOG_PARSER 2
6ca3b41c
VK
63
64
cbcaf8c8
VK
65//
66// Error codes
67//
68
deaa4491
VK
69#define ERR_SUCCESS ((DWORD)0)
70#define ERR_UNKNOWN_COMMAND ((DWORD)400)
71#define ERR_AUTH_REQUIRED ((DWORD)401)
d096bcdd 72#define ERR_ACCESS_DENIED ((DWORD)403)
deaa4491
VK
73#define ERR_UNKNOWN_PARAMETER ((DWORD)404)
74#define ERR_REQUEST_TIMEOUT ((DWORD)408)
75#define ERR_AUTH_FAILED ((DWORD)440)
76#define ERR_ALREADY_AUTHENTICATED ((DWORD)441)
77#define ERR_AUTH_NOT_REQUIRED ((DWORD)442)
78#define ERR_INTERNAL_ERROR ((DWORD)500)
79#define ERR_NOT_IMPLEMENTED ((DWORD)501)
80#define ERR_OUT_OF_RESOURCES ((DWORD)503)
81#define ERR_NOT_CONNECTED ((DWORD)900)
82#define ERR_CONNECTION_BROKEN ((DWORD)901)
1a17feb0 83#define ERR_BAD_RESPONSE ((DWORD)902)
d096bcdd
VK
84#define ERR_IO_FAILURE ((DWORD)903)
85#define ERR_RESOURCE_BUSY ((DWORD)904)
e925a5fc 86#define ERR_EXEC_FAILED ((DWORD)905)
e44ac467
VK
87#define ERR_ENCRYPTION_REQUIRED ((DWORD)906)
88#define ERR_NO_CIPHERS ((DWORD)907)
89#define ERR_INVALID_PUBLIC_KEY ((DWORD)908)
90#define ERR_INVALID_SESSION_KEY ((DWORD)909)
1ba3c17a 91#define ERR_CONNECT_FAILED ((DWORD)910)
78e570e6 92#define ERR_MALFORMED_COMMAND ((DWORD)911)
f1448d17 93#define ERR_SOCKET_ERROR ((DWORD)912)
dbca7ed1 94#define ERR_BAD_ARGUMENTS ((DWORD)913)
5405ce0b 95#define ERR_SUBAGENT_LOAD_FAILED ((DWORD)914)
deb10d32
VK
96#define ERR_FILE_OPEN_ERROR ((DWORD)915)
97#define ERR_FILE_STAT_FAILED ((DWORD)916)
98#define ERR_MEM_ALLOC_FAILED ((DWORD)917)
99#define ERR_FILE_DELETE_FAILED ((DWORD)918)
cbcaf8c8
VK
100
101
102//
103// Parameter handler return codes
104//
105
106#define SYSINFO_RC_SUCCESS 0
107#define SYSINFO_RC_UNSUPPORTED 1
108#define SYSINFO_RC_ERROR 2
109
110
30c68fa1
AK
111//
112// Descriptions for common parameters
113//
114
bf3b7f79
VK
115#define DCIDESC_FS_AVAIL _T("Available space on file system {instance}")
116#define DCIDESC_FS_AVAILPERC _T("Percentage of available space on file system {instance}")
117#define DCIDESC_FS_FREE _T("Free space on file system {instance}")
118#define DCIDESC_FS_FREEPERC _T("Percentage of free space on file system {instance}")
119#define DCIDESC_FS_TOTAL _T("Total space on file system {instance}")
120#define DCIDESC_FS_USED _T("Used space on file system {instance}")
121#define DCIDESC_FS_USEDPERC _T("Percentage of used space on file system {instance}")
122#define DCIDESC_NET_INTERFACE_ADMINSTATUS _T("Administrative status of interface {instance}")
123#define DCIDESC_NET_INTERFACE_BYTESIN _T("Number of input bytes on interface {instance}")
124#define DCIDESC_NET_INTERFACE_BYTESOUT _T("Number of output bytes on interface {instance}")
125#define DCIDESC_NET_INTERFACE_DESCRIPTION _T("Description of interface {instance}")
126#define DCIDESC_NET_INTERFACE_INERRORS _T("Number of input errors on interface {instance}")
127#define DCIDESC_NET_INTERFACE_LINK _T("Link status for interface {instance}")
128#define DCIDESC_NET_INTERFACE_MTU _T("MTU for interface {instance}")
129#define DCIDESC_NET_INTERFACE_OPERSTATUS _T("Operational status of interface {instance}")
130#define DCIDESC_NET_INTERFACE_OUTERRORS _T("Number of output errors on interface {instance}")
131#define DCIDESC_NET_INTERFACE_PACKETSIN _T("Number of input packets on interface {instance}")
132#define DCIDESC_NET_INTERFACE_PACKETSOUT _T("Number of output packets on interface {instance}")
133#define DCIDESC_NET_INTERFACE_SPEED _T("Speed of interface {instance}")
134#define DCIDESC_NET_IP_FORWARDING _T("IP forwarding status")
135#define DCIDESC_NET_IP6_FORWARDING _T("IPv6 forwarding status")
136#define DCIDESC_PHYSICALDISK_FIRMWARE _T("Firmware version of hard disk {instance}")
137#define DCIDESC_PHYSICALDISK_MODEL _T("Model of hard disk {instance}")
138#define DCIDESC_PHYSICALDISK_SERIALNUMBER _T("Serial number of hard disk {instance}")
139#define DCIDESC_PHYSICALDISK_SMARTATTR _T("")
140#define DCIDESC_PHYSICALDISK_SMARTSTATUS _T("Status of hard disk {instance} reported by SMART")
141#define DCIDESC_PHYSICALDISK_TEMPERATURE _T("Temperature of hard disk {instance}")
142#define DCIDESC_SYSTEM_CPU_COUNT _T("Number of CPU in the system")
143#define DCIDESC_SYSTEM_HOSTNAME _T("Host name")
144#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_FREE _T("Free physical memory")
145#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_FREE_PCT _T("Percentage of free physical memory")
146#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_TOTAL _T("Total amount of physical memory")
147#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_USED _T("Used physical memory")
148#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_USED_PCT _T("Percentage of used physical memory")
149#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_AVAILABLE _T("Available physical memory")
150#define DCIDESC_SYSTEM_MEMORY_PHYSICAL_AVAILABLE_PCT _T("Percentage of available physical memory")
03a48429
VK
151#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_ACTIVE _T("Active virtual memory")
152#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_ACTIVE_PCT _T("Percentage of active virtual memory")
bf3b7f79
VK
153#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_FREE _T("Free virtual memory")
154#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_FREE_PCT _T("Percentage of free virtual memory")
155#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_TOTAL _T("Total amount of virtual memory")
156#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_USED _T("Used virtual memory")
157#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_USED_PCT _T("Percentage of used virtual memory")
158#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_AVAILABLE _T("Available virtual memory")
159#define DCIDESC_SYSTEM_MEMORY_VIRTUAL_AVAILABLE_PCT _T("Percentage of available virtual memory")
160#define DCIDESC_SYSTEM_MEMORY_SWAP_FREE _T("Free swap space")
161#define DCIDESC_SYSTEM_MEMORY_SWAP_FREE_PCT _T("Percentage of free swap space")
162#define DCIDESC_SYSTEM_MEMORY_SWAP_TOTAL _T("Total amount of swap space")
163#define DCIDESC_SYSTEM_MEMORY_SWAP_USED _T("Used swap space")
164#define DCIDESC_SYSTEM_MEMORY_SWAP_USED_PCT _T("Percentage of used swap space")
165#define DCIDESC_SYSTEM_UNAME _T("System uname")
166#define DCIDESC_AGENT_ACCEPTEDCONNECTIONS _T("Number of connections accepted by agent")
167#define DCIDESC_AGENT_ACCEPTERRORS _T("Number of accept() call errors")
168#define DCIDESC_AGENT_ACTIVECONNECTIONS _T("Number of active connections to agent")
169#define DCIDESC_AGENT_AUTHENTICATIONFAILURES _T("Number of authentication failures")
170#define DCIDESC_AGENT_CONFIG_SERVER _T("Configuration server address set on agent startup")
171#define DCIDESC_AGENT_FAILEDREQUESTS _T("Number of failed requests to agent")
172#define DCIDESC_AGENT_GENERATED_TRAPS _T("Number of traps generated by agent")
05db3127 173#define DCIDESC_AGENT_IS_SUBAGENT_LOADED _T("Check if given subagent is loaded")
bf3b7f79
VK
174#define DCIDESC_AGENT_LAST_TRAP_TIME _T("Timestamp of last generated trap")
175#define DCIDESC_AGENT_PROCESSEDREQUESTS _T("Number of requests processed by agent")
176#define DCIDESC_AGENT_REGISTRAR _T("Registrar server address set on agent startup")
177#define DCIDESC_AGENT_REJECTEDCONNECTIONS _T("Number of connections rejected by agent")
178#define DCIDESC_AGENT_SENT_TRAPS _T("Number of traps successfully sent to server")
05db3127 179#define DCIDESC_AGENT_SOURCEPACKAGESUPPORT _T("Check if source packages are supported")
bf3b7f79
VK
180#define DCIDESC_AGENT_SUPPORTEDCIPHERS _T("List of ciphers supported by agent")
181#define DCIDESC_AGENT_TIMEDOUTREQUESTS _T("Number of timed out requests to agent")
182#define DCIDESC_AGENT_UNSUPPORTEDREQUESTS _T("Number of requests for unsupported parameters")
183#define DCIDESC_AGENT_UPTIME _T("Agent's uptime")
184#define DCIDESC_AGENT_VERSION _T("Agent's version")
185#define DCIDESC_FILE_COUNT _T("Number of files {instance}")
186#define DCIDESC_FILE_HASH_CRC32 _T("CRC32 checksum of {instance}")
187#define DCIDESC_FILE_HASH_MD5 _T("MD5 hash of {instance}")
188#define DCIDESC_FILE_HASH_SHA1 _T("SHA1 hash of {instance}")
189#define DCIDESC_FILE_SIZE _T("Size of file {instance}")
190#define DCIDESC_FILE_TIME_ACCESS _T("Time of last access to file {instance}")
191#define DCIDESC_FILE_TIME_CHANGE _T("Time of last status change of file {instance}")
192#define DCIDESC_FILE_TIME_MODIFY _T("Time of last modification of file {instance}")
8ce7501b 193#define DCIDESC_SYSTEM_CURRENTTIME _T("Current system time")
bf3b7f79
VK
194#define DCIDESC_SYSTEM_PLATFORMNAME _T("Platform name")
195#define DCIDESC_PROCESS_COUNT _T("Number of {instance} processes")
196#define DCIDESC_PROCESS_COUNTEX _T("Number of {instance} processes (extended)")
197#define DCIDESC_PROCESS_CPUTIME _T("Total execution time for process {instance}")
198#define DCIDESC_PROCESS_GDIOBJ _T("GDI objects used by process {instance}")
199#define DCIDESC_PROCESS_IO_OTHERB _T("")
200#define DCIDESC_PROCESS_IO_OTHEROP _T("")
201#define DCIDESC_PROCESS_IO_READB _T("")
202#define DCIDESC_PROCESS_IO_READOP _T("")
203#define DCIDESC_PROCESS_IO_WRITEB _T("")
204#define DCIDESC_PROCESS_IO_WRITEOP _T("")
205#define DCIDESC_PROCESS_KERNELTIME _T("Total execution time in kernel mode for process {instance}")
206#define DCIDESC_PROCESS_PAGEFAULTS _T("Page faults for process {instance}")
207#define DCIDESC_PROCESS_SYSCALLS _T("Number of system calls made by process {instance}")
208#define DCIDESC_PROCESS_THREADS _T("Number of threads in process {instance}")
209#define DCIDESC_PROCESS_USEROBJ _T("USER objects used by process {instance}")
210#define DCIDESC_PROCESS_USERTIME _T("Total execution time in user mode for process {instance}")
211#define DCIDESC_PROCESS_VMSIZE _T("Virtual memory used by process {instance}")
212#define DCIDESC_PROCESS_WKSET _T("Physical memory used by process {instance}")
213#define DCIDESC_SYSTEM_APPADDRESSSPACE _T("Address space available to applications (MB)")
214#define DCIDESC_SYSTEM_CONNECTEDUSERS _T("Number of logged in users")
215#define DCIDESC_SYSTEM_PROCESSCOUNT _T("Total number of processes")
216#define DCIDESC_SYSTEM_SERVICESTATE _T("State of {instance} service")
217#define DCIDESC_SYSTEM_PROCESSCOUNT _T("Total number of processes")
218#define DCIDESC_SYSTEM_THREADCOUNT _T("Total number of threads")
219#define DCIDESC_PDH_COUNTERVALUE _T("Value of PDH counter {instance}")
220#define DCIDESC_PDH_VERSION _T("Version of PDH.DLL")
221#define DCIDESC_SYSTEM_UPTIME _T("System uptime")
222#define DCIDESC_SYSTEM_CPU_LOADAVG _T("Average CPU load for last minute")
223#define DCIDESC_SYSTEM_CPU_LOADAVG5 _T("Average CPU load for last 5 minutes")
224#define DCIDESC_SYSTEM_CPU_LOADAVG15 _T("Average CPU load for last 15 minutes")
225
226
227#define DCIDESC_SYSTEM_CPU_USAGE_EX _T("Average CPU {instance} utilization for last minute")
228#define DCIDESC_SYSTEM_CPU_USAGE5_EX _T("Average CPU {instance} utilization for last 5 minutes")
229#define DCIDESC_SYSTEM_CPU_USAGE15_EX _T("Average CPU {instance} utilization for last 15 minutes")
230#define DCIDESC_SYSTEM_CPU_USAGE _T("Average CPU utilization for last minute")
231#define DCIDESC_SYSTEM_CPU_USAGE5 _T("Average CPU utilization for last 5 minutes")
232#define DCIDESC_SYSTEM_CPU_USAGE15 _T("Average CPU utilization for last 15 minutes")
233
234#define DCIDESC_SYSTEM_CPU_USAGE_USER_EX _T("Average CPU {instance} utilization (user) for last minute")
235#define DCIDESC_SYSTEM_CPU_USAGE5_USER_EX _T("Average CPU {instance} utilization (user) for last 5 minutes")
236#define DCIDESC_SYSTEM_CPU_USAGE15_USER_EX _T("Average CPU {instance} utilization (user) for last 15 minutes")
237#define DCIDESC_SYSTEM_CPU_USAGE_USER _T("Average CPU utilization (user) for last minute")
238#define DCIDESC_SYSTEM_CPU_USAGE5_USER _T("Average CPU utilization (user) for last 5 minutes")
239#define DCIDESC_SYSTEM_CPU_USAGE15_USER _T("Average CPU utilization (user) for last 15 minutes")
240
241#define DCIDESC_SYSTEM_CPU_USAGE_NICE_EX _T("Average CPU {instance} utilization (nice) for last minute")
242#define DCIDESC_SYSTEM_CPU_USAGE5_NICE_EX _T("Average CPU {instance} utilization (nice) for last 5 minutes")
243#define DCIDESC_SYSTEM_CPU_USAGE15_NICE_EX _T("Average CPU {instance} utilization (nice) for last 15 minutes")
244#define DCIDESC_SYSTEM_CPU_USAGE_NICE _T("Average CPU utilization (nice) for last minute")
245#define DCIDESC_SYSTEM_CPU_USAGE5_NICE _T("Average CPU utilization (nice) for last 5 minutes")
246#define DCIDESC_SYSTEM_CPU_USAGE15_NICE _T("Average CPU utilization (nice) for last 15 minutes")
247
248#define DCIDESC_SYSTEM_CPU_USAGE_SYSTEM_EX _T("Average CPU {instance} utilization (system) for last minute")
249#define DCIDESC_SYSTEM_CPU_USAGE5_SYSTEM_EX _T("Average CPU {instance} utilization (system) for last 5 minutes")
250#define DCIDESC_SYSTEM_CPU_USAGE15_SYSTEM_EX _T("Average CPU {instance} utilization (system) for last 15 minutes")
251#define DCIDESC_SYSTEM_CPU_USAGE_SYSTEM _T("Average CPU utilization (system) for last minute")
252#define DCIDESC_SYSTEM_CPU_USAGE5_SYSTEM _T("Average CPU utilization (system) for last 5 minutes")
253#define DCIDESC_SYSTEM_CPU_USAGE15_SYSTEM _T("Average CPU utilization (system) for last 15 minutes")
254
255#define DCIDESC_SYSTEM_CPU_USAGE_IDLE_EX _T("Average CPU {instance} utilization (idle) for last minute")
256#define DCIDESC_SYSTEM_CPU_USAGE5_IDLE_EX _T("Average CPU {instance} utilization (idle) for last 5 minutes")
257#define DCIDESC_SYSTEM_CPU_USAGE15_IDLE_EX _T("Average CPU {instance} utilization (idle) for last 15 minutes")
258#define DCIDESC_SYSTEM_CPU_USAGE_IDLE _T("Average CPU utilization (idle) for last minute")
259#define DCIDESC_SYSTEM_CPU_USAGE5_IDLE _T("Average CPU utilization (idle) for last 5 minutes")
260#define DCIDESC_SYSTEM_CPU_USAGE15_IDLE _T("Average CPU utilization (idle) for last 15 minutes")
261
262#define DCIDESC_SYSTEM_CPU_USAGE_IOWAIT_EX _T("Average CPU {instance} utilization (iowait) for last minute")
263#define DCIDESC_SYSTEM_CPU_USAGE5_IOWAIT_EX _T("Average CPU {instance} utilization (iowait) for last 5 minutes")
264#define DCIDESC_SYSTEM_CPU_USAGE15_IOWAIT_EX _T("Average CPU {instance} utilization (iowait) for last 15 minutes")
265#define DCIDESC_SYSTEM_CPU_USAGE_IOWAIT _T("Average CPU utilization (iowait) for last minute")
266#define DCIDESC_SYSTEM_CPU_USAGE5_IOWAIT _T("Average CPU utilization (iowait) for last 5 minutes")
267#define DCIDESC_SYSTEM_CPU_USAGE15_IOWAIT _T("Average CPU utilization (iowait) for last 15 minutes")
268
269#define DCIDESC_SYSTEM_CPU_USAGE_IRQ_EX _T("Average CPU {instance} utilization (irq) for last minute")
270#define DCIDESC_SYSTEM_CPU_USAGE5_IRQ_EX _T("Average CPU {instance} utilization (irq) for last 5 minutes")
271#define DCIDESC_SYSTEM_CPU_USAGE15_IRQ_EX _T("Average CPU {instance} utilization (irq) for last 15 minutes")
272#define DCIDESC_SYSTEM_CPU_USAGE_IRQ _T("Average CPU utilization (irq) for last minute")
273#define DCIDESC_SYSTEM_CPU_USAGE5_IRQ _T("Average CPU utilization (irq) for last 5 minutes")
274#define DCIDESC_SYSTEM_CPU_USAGE15_IRQ _T("Average CPU utilization (irq) for last 15 minutes")
275
276#define DCIDESC_SYSTEM_CPU_USAGE_SOFTIRQ_EX _T("Average CPU {instance} utilization (softirq) for last minute")
277#define DCIDESC_SYSTEM_CPU_USAGE5_SOFTIRQ_EX _T("Average CPU {instance} utilization (softirq) for last 5 minutes")
278#define DCIDESC_SYSTEM_CPU_USAGE15_SOFTIRQ_EX _T("Average CPU {instance} utilization (softirq) for last 15 minutes")
279#define DCIDESC_SYSTEM_CPU_USAGE_SOFTIRQ _T("Average CPU utilization (softirq) for last minute")
280#define DCIDESC_SYSTEM_CPU_USAGE5_SOFTIRQ _T("Average CPU utilization (softirq) for last 5 minutes")
281#define DCIDESC_SYSTEM_CPU_USAGE15_SOFTIRQ _T("Average CPU utilization (softirq) for last 15 minutes")
282
283#define DCIDESC_SYSTEM_CPU_USAGE_STEAL_EX _T("Average CPU {instance} utilization (steal) for last minute")
284#define DCIDESC_SYSTEM_CPU_USAGE5_STEAL_EX _T("Average CPU {instance} utilization (steal) for last 5 minutes")
285#define DCIDESC_SYSTEM_CPU_USAGE15_STEAL_EX _T("Average CPU {instance} utilization (steal) for last 15 minutes")
286#define DCIDESC_SYSTEM_CPU_USAGE_STEAL _T("Average CPU utilization (steal) for last minute")
287#define DCIDESC_SYSTEM_CPU_USAGE5_STEAL _T("Average CPU utilization (steal) for last 5 minutes")
288#define DCIDESC_SYSTEM_CPU_USAGE15_STEAL _T("Average CPU utilization (steal) for last 15 minutes")
289
290#define DCIDESC_SYSTEM_CPU_USAGE_GUEST_EX _T("Average CPU {instance} utilization (guest) for last minute")
291#define DCIDESC_SYSTEM_CPU_USAGE5_GUEST_EX _T("Average CPU {instance} utilization (guest) for last 5 minutes")
292#define DCIDESC_SYSTEM_CPU_USAGE15_GUEST_EX _T("Average CPU {instance} utilization (guest) for last 15 minutes")
293#define DCIDESC_SYSTEM_CPU_USAGE_GUEST _T("Average CPU utilization (guest) for last minute")
294#define DCIDESC_SYSTEM_CPU_USAGE5_GUEST _T("Average CPU utilization (guest) for last 5 minutes")
295#define DCIDESC_SYSTEM_CPU_USAGE15_GUEST _T("Average CPU utilization (guest) for last 15 minutes")
296
297#define DCIDESC_SYSTEM_IO_DISKQUEUE _T("Average disk queue length for last minute")
3e00a175
VK
298#define DCIDESC_SYSTEM_IO_DISKQUEUE_MIN _T("Minimum disk queue length for last minute")
299#define DCIDESC_SYSTEM_IO_DISKQUEUE_MAX _T("Maximum disk queue length for last minute")
bf3b7f79 300#define DCIDESC_SYSTEM_IO_DISKQUEUE_EX _T("Average disk queue length of device {instance} for last minute")
3e00a175
VK
301#define DCIDESC_SYSTEM_IO_DISKQUEUE_EX_MIN _T("Minimum disk queue length of device {instance} for last minute")
302#define DCIDESC_SYSTEM_IO_DISKQUEUE_EX_MAX _T("Maximum disk queue length of device {instance} for last minute")
bf3b7f79
VK
303#define DCIDESC_SYSTEM_IO_DISKTIME _T("Percent of CPU time spent on I/O for last minute")
304#define DCIDESC_SYSTEM_IO_DISKTIME_EX _T("Percent of CPU time spent on I/O on device {instance} for last minute")
305#define DCIDESC_SYSTEM_IO_WAITTIME _T("Average I/O request wait time")
306#define DCIDESC_SYSTEM_IO_WAITTIME_EX _T("Average I/O request wait time for device {instance}")
307#define DCIDESC_SYSTEM_IO_READS _T("Average number of read operations for last minute")
3e00a175
VK
308#define DCIDESC_SYSTEM_IO_READS_MIN _T("Minimum number of read operations for last minute")
309#define DCIDESC_SYSTEM_IO_READS_MAX _T("Maximum number of read operations for last minute")
bf3b7f79 310#define DCIDESC_SYSTEM_IO_READS_EX _T("Average number of read operations on device {instance} for last minute")
3e00a175
VK
311#define DCIDESC_SYSTEM_IO_READS_EX_MIN _T("Minimum number of read operations on device {instance} for last minute")
312#define DCIDESC_SYSTEM_IO_READS_EX_MAX _T("Maximum number of read operations on device {instance} for last minute")
bf3b7f79 313#define DCIDESC_SYSTEM_IO_WRITES _T("Average number of write operations for last minute")
3e00a175
VK
314#define DCIDESC_SYSTEM_IO_WRITES_MIN _T("Minimum number of write operations for last minute")
315#define DCIDESC_SYSTEM_IO_WRITES_MAX _T("Maximum number of write operations for last minute")
bf3b7f79 316#define DCIDESC_SYSTEM_IO_WRITES_EX _T("Average number of write operations on device {instance} for last minute")
3e00a175
VK
317#define DCIDESC_SYSTEM_IO_WRITES_EX_MIN _T("Minimum number of write operations on device {instance} for last minute")
318#define DCIDESC_SYSTEM_IO_WRITES_EX_MAX _T("Maximum number of write operations on device {instance} for last minute")
bf3b7f79 319#define DCIDESC_SYSTEM_IO_XFERS _T("Average number of I/O transfers for last minute")
3e00a175
VK
320#define DCIDESC_SYSTEM_IO_XFERS_MIN _T("Minimum number of I/O transfers for last minute")
321#define DCIDESC_SYSTEM_IO_XFERS_MAX _T("Maximum number of I/O transfers for last minute")
bf3b7f79 322#define DCIDESC_SYSTEM_IO_XFERS_EX _T("Average number of I/O transfers on device {instance} for last minute")
3e00a175
VK
323#define DCIDESC_SYSTEM_IO_XFERS_EX_MIN _T("Minimum number of I/O transfers on device {instance} for last minute")
324#define DCIDESC_SYSTEM_IO_XFERS_EX_MAX _T("Maximum number of I/O transfers on device {instance} for last minute")
bf3b7f79 325#define DCIDESC_SYSTEM_IO_BYTEREADS _T("Average number of bytes read for last minute")
3e00a175
VK
326#define DCIDESC_SYSTEM_IO_BYTEREADS_MIN _T("Minimum number of bytes read for last minute")
327#define DCIDESC_SYSTEM_IO_BYTEREADS_MAX _T("Maximum number of bytes read for last minute")
bf3b7f79 328#define DCIDESC_SYSTEM_IO_BYTEREADS_EX _T("Average number of bytes read on device {instance} for last minute")
3e00a175
VK
329#define DCIDESC_SYSTEM_IO_BYTEREADS_EX_MIN _T("Minimum number of bytes read on device {instance} for last minute")
330#define DCIDESC_SYSTEM_IO_BYTEREADS_EX_MAX _T("Maximum number of bytes read on device {instance} for last minute")
bf3b7f79 331#define DCIDESC_SYSTEM_IO_BYTEWRITES _T("Average number of bytes written for last minute")
3e00a175
VK
332#define DCIDESC_SYSTEM_IO_BYTEWRITES_MIN _T("Minimum number of bytes written for last minute")
333#define DCIDESC_SYSTEM_IO_BYTEWRITES_MAX _T("Maximum number of bytes written for last minute")
bf3b7f79 334#define DCIDESC_SYSTEM_IO_BYTEWRITES_EX _T("Average number of bytes written on device {instance} for last minute")
3e00a175
VK
335#define DCIDESC_SYSTEM_IO_BYTEWRITES_EX_MIN _T("Minimum number of bytes written on device {instance} for last minute")
336#define DCIDESC_SYSTEM_IO_BYTEWRITES_EX_MAX _T("Maximum number of bytes written on device {instance} for last minute")
bf3b7f79
VK
337#define DCIDESC_SYSTEM_IO_OPENFILES _T("Number of open files")
338
339
340#define DCIDESC_DEPRECATED _T("<deprecated>")
30c68fa1
AK
341
342
a8799146
VK
343#define DCTDESC_FILESYSTEM_VOLUMES _T("File system volumes")
344#define DCTDESC_SYSTEM_PROCESSES _T("Process table")
cc8ce218
VK
345
346
3b376ea0 347//
6827d635 348// Subagent's parameter information
3b376ea0
VK
349//
350
6827d635
VK
351typedef struct
352{
4687826e
VK
353 TCHAR name[MAX_PARAM_NAME];
354 LONG (* handler)(const TCHAR *, const TCHAR *, TCHAR *);
355 const TCHAR *arg;
356 int dataType; // Use DT_DEPRECATED to indicate deprecated parameter
357 TCHAR description[MAX_DB_STRING];
6827d635
VK
358} NETXMS_SUBAGENT_PARAM;
359
360
f480bdd4
VK
361//
362// Subagent's push parameter information
363//
364
365typedef struct
366{
367 TCHAR name[MAX_PARAM_NAME];
368 int dataType;
369 TCHAR description[MAX_DB_STRING];
370} NETXMS_SUBAGENT_PUSHPARAM;
371
372
901c96c7 373//
4687826e 374// Subagent's list information
901c96c7
VK
375//
376
377typedef struct
378{
4687826e
VK
379 TCHAR name[MAX_PARAM_NAME];
380 LONG (* handler)(const TCHAR *, const TCHAR *, StringList *);
381 const TCHAR *arg;
382} NETXMS_SUBAGENT_LIST;
383
384
385//
386// Subagent's table information
387//
388
389typedef struct
390{
391 TCHAR name[MAX_PARAM_NAME];
392 LONG (* handler)(const TCHAR *, const TCHAR *, Table *);
393 const TCHAR *arg;
cc8ce218
VK
394 TCHAR instanceColumn[MAX_COLUMN_NAME];
395 TCHAR description[MAX_DB_STRING];
4687826e 396} NETXMS_SUBAGENT_TABLE;
901c96c7
VK
397
398
37778a1d
VK
399//
400// Subagent's action information
401//
402
403typedef struct
404{
4687826e
VK
405 TCHAR name[MAX_PARAM_NAME];
406 LONG (* handler)(const TCHAR *, StringList *, const TCHAR *);
407 const TCHAR *arg;
408 TCHAR description[MAX_DB_STRING];
37778a1d
VK
409} NETXMS_SUBAGENT_ACTION;
410
411
6827d635
VK
412//
413// Subagent initialization structure
414//
3b376ea0 415
4687826e 416#define NETXMS_SUBAGENT_INFO_MAGIC ((DWORD)0x20110301)
ded831ac
VK
417
418class CSCPMessage;
d618c3ae 419
6827d635
VK
420typedef struct
421{
4687826e
VK
422 DWORD magic; // Magic number to check if subagent uses correct version of this structure
423 TCHAR name[MAX_SUBAGENT_NAME];
424 TCHAR version[32];
425 BOOL (* init)(Config *); // Called to initialize subagent. Can be NULL.
426 void (* shutdown)(); // Called at subagent unload. Can be NULL.
427 BOOL (* commandHandler)(DWORD dwCommand, CSCPMessage *pRequest,
428 CSCPMessage *pResponse, void *session);
429 DWORD numParameters;
430 NETXMS_SUBAGENT_PARAM *parameters;
431 DWORD numLists;
432 NETXMS_SUBAGENT_LIST *lists;
433 DWORD numTables;
434 NETXMS_SUBAGENT_TABLE *tables;
435 DWORD numActions;
436 NETXMS_SUBAGENT_ACTION *actions;
437 DWORD numPushParameters;
438 NETXMS_SUBAGENT_PUSHPARAM *pushParameters;
6827d635 439} NETXMS_SUBAGENT_INFO;
3b376ea0
VK
440
441
cbcaf8c8
VK
442//
443// Inline functions for returning parameters
444//
445
a765d97c 446inline void ret_string(TCHAR *rbuf, const TCHAR *value)
cbcaf8c8 447{
a23d8e0d 448 nx_strncpy(rbuf, value, MAX_RESULT_LENGTH);
cbcaf8c8
VK
449}
450
f3387429
VK
451inline void ret_wstring(TCHAR *rbuf, const WCHAR *value)
452{
453#ifdef UNICODE
454 nx_strncpy(rbuf, value, MAX_RESULT_LENGTH);
455#else
456 WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK | WC_DEFAULTCHAR, value, -1, rbuf, MAX_RESULT_LENGTH, NULL, NULL);
457 rbuf[MAX_RESULT_LENGTH - 1] = 0;
458#endif
459}
460
461inline void ret_mbstring(TCHAR *rbuf, const char *value)
462{
463#ifdef UNICODE
464 MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, value, -1, rbuf, MAX_RESULT_LENGTH);
465 rbuf[MAX_RESULT_LENGTH - 1] = 0;
466#else
467 nx_strncpy(rbuf, value, MAX_RESULT_LENGTH);
468#endif
469}
470
0212dc5a 471inline void ret_int(TCHAR *rbuf, LONG value)
cbcaf8c8 472{
66d07089 473#if defined(_WIN32) && (_MSC_VER >= 1300)
6e38075b 474 _sntprintf_s(rbuf, MAX_RESULT_LENGTH, _TRUNCATE, _T("%ld"), (long)value);
a23d8e0d 475#else
6e38075b 476 _sntprintf(rbuf, MAX_RESULT_LENGTH, _T("%ld"), (long)value);
a23d8e0d 477#endif
cbcaf8c8
VK
478}
479
0212dc5a 480inline void ret_uint(TCHAR *rbuf, DWORD value)
cbcaf8c8 481{
66d07089 482#if defined(_WIN32) && (_MSC_VER >= 1300)
6e38075b 483 _sntprintf_s(rbuf, MAX_RESULT_LENGTH, _TRUNCATE, _T("%lu"), (unsigned long)value);
a23d8e0d 484#else
6e38075b 485 _sntprintf(rbuf, MAX_RESULT_LENGTH, _T("%lu"), (unsigned long)value);
a23d8e0d 486#endif
cbcaf8c8
VK
487}
488
018fda4d 489inline void ret_double(TCHAR *rbuf, double value)
cbcaf8c8 490{
66d07089 491#if defined(_WIN32) && (_MSC_VER >= 1300)
a23d8e0d
VK
492 _sntprintf_s(rbuf, MAX_RESULT_LENGTH, _TRUNCATE, _T("%f"), value);
493#else
8b86c5dc 494 _sntprintf(rbuf, MAX_RESULT_LENGTH, _T("%f"), value);
a23d8e0d 495#endif
cbcaf8c8
VK
496}
497
018fda4d 498inline void ret_int64(TCHAR *rbuf, INT64 value)
cbcaf8c8 499{
66d07089 500#if defined(_WIN32) && (_MSC_VER >= 1300)
a23d8e0d 501 _sntprintf_s(rbuf, MAX_RESULT_LENGTH, _TRUNCATE, _T("%I64d"), value);
cbcaf8c8 502#else /* _WIN32 */
ccc34207 503 _sntprintf(rbuf, MAX_RESULT_LENGTH, INT64_FMT, value);
cbcaf8c8
VK
504#endif /* _WIN32 */
505}
506
018fda4d 507inline void ret_uint64(TCHAR *rbuf, QWORD value)
cbcaf8c8 508{
66d07089 509#if defined(_WIN32) && (_MSC_VER >= 1300)
a23d8e0d 510 _sntprintf_s(rbuf, MAX_RESULT_LENGTH, _TRUNCATE, _T("%I64u"), value);
cbcaf8c8 511#else /* _WIN32 */
ccc34207 512 _sntprintf(rbuf, MAX_RESULT_LENGTH, UINT64_FMT, value);
cbcaf8c8
VK
513#endif /* _WIN32 */
514}
515
6827d635
VK
516
517//
6173bea8 518// API for subagents
6827d635
VK
519//
520
f3387429
VK
521BOOL LIBNETXMS_EXPORTABLE AgentGetParameterArgA(const TCHAR *param, int index, char *arg, int maxSize);
522BOOL LIBNETXMS_EXPORTABLE AgentGetParameterArgW(const TCHAR *param, int index, WCHAR *arg, int maxSize);
523#ifdef UNICODE
524#define AgentGetParameterArg AgentGetParameterArgW
525#else
526#define AgentGetParameterArg AgentGetParameterArgA
527#endif
528
c303351c
VK
529void LIBNETXMS_EXPORTABLE AgentWriteLog(int logLevel, const TCHAR *format, ...);
530void LIBNETXMS_EXPORTABLE AgentWriteLog2(int logLevel, const TCHAR *format, va_list args);
531void LIBNETXMS_EXPORTABLE AgentWriteDebugLog(int level, const TCHAR *format, ...);
532void LIBNETXMS_EXPORTABLE AgentWriteDebugLog2(int level, const TCHAR *format, va_list args);
2dd24569
VK
533void LIBNETXMS_EXPORTABLE AgentSendTrap(DWORD dwEvent, const TCHAR *eventName, const char *pszFormat, ...);
534void LIBNETXMS_EXPORTABLE AgentSendTrap2(DWORD dwEvent, const TCHAR *eventName, int nCount, TCHAR **ppszArgList);
6f1abd2c 535BOOL LIBNETXMS_EXPORTABLE AgentSendFileToServer(void *session, DWORD requestId, const TCHAR *file, long offset);
f480bdd4 536BOOL LIBNETXMS_EXPORTABLE AgentPushParameterData(const TCHAR *parameter, const TCHAR *value);
9309ac95
VK
537BOOL LIBNETXMS_EXPORTABLE AgentPushParameterDataInt32(const TCHAR *parameter, LONG value);
538BOOL LIBNETXMS_EXPORTABLE AgentPushParameterDataUInt32(const TCHAR *parameter, DWORD value);
539BOOL LIBNETXMS_EXPORTABLE AgentPushParameterDataInt64(const TCHAR *parameter, INT64 value);
540BOOL LIBNETXMS_EXPORTABLE AgentPushParameterDataUInt64(const TCHAR *parameter, QWORD value);
541BOOL LIBNETXMS_EXPORTABLE AgentPushParameterDataDouble(const TCHAR *parameter, double value);
6827d635 542
cbcaf8c8 543#endif /* _nms_agent_h_ */