Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Vladishev <alexei.vladishev@zabbix.com>2013-02-12 20:32:23 +0400
committerAlexei Vladishev <alexei.vladishev@zabbix.com>2013-02-12 20:32:23 +0400
commit2bdcc88542ac6a16406c4feeeb3b75cf6ce12cb6 (patch)
treed055b207e009d7922e07ec9f414534f12067d390 /include/module.h
parent9cc58394e42664fa32c7ed18568a8775b843ff55 (diff)
...G...... [ZBXNEXT-1550] added support of loadable modules for zabbix_agent, better location of source files and various minor improvements
Diffstat (limited to 'include/module.h')
-rw-r--r--include/module.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/include/module.h b/include/module.h
new file mode 100644
index 00000000000..de7415aef74
--- /dev/null
+++ b/include/module.h
@@ -0,0 +1,92 @@
+/*
+** Zabbix
+** Copyright (C) 2000-2013 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any 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
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#ifndef ZABBIX_MODULE_H
+#define ZABBIX_MODULE_H
+
+#define ZBX_MODULE_OK 0
+#define ZBX_MODULE_FAIL -1
+
+#define get_rparam(request,num) ((request->nparam > num) ? request->params[num] : NULL)
+
+/* agent request structure */
+typedef struct
+{
+ char *key;
+ int nparam;
+ int timeout;
+ char **params;
+}
+AGENT_REQUEST;
+
+/* agent return structure */
+typedef struct
+{
+ int type;
+ zbx_uint64_t ui64;
+ double dbl;
+ char *str;
+ char *text;
+ char *msg;
+}
+AGENT_RESULT;
+
+/* agent result types */
+#define AR_UINT64 0x01
+#define AR_DOUBLE 0x02
+#define AR_STRING 0x04
+#define AR_TEXT 0x08
+#define AR_MESSAGE 0x10
+
+/* SET RESULT */
+
+#define SET_UI64_RESULT(res, val) \
+( \
+ (res)->type |= AR_UINT64, \
+ (res)->ui64 = (zbx_uint64_t)(val) \
+)
+
+#define SET_DBL_RESULT(res, val) \
+( \
+ (res)->type |= AR_DOUBLE, \
+ (res)->dbl = (double)(val) \
+)
+
+/* NOTE: always allocate new memory for val! DON'T USE STATIC OR STACK MEMORY!!! */
+#define SET_STR_RESULT(res, val) \
+( \
+ (res)->type |= AR_STRING, \
+ (res)->str = (char *)(val) \
+)
+
+/* NOTE: always allocate new memory for val! DON'T USE STATIC OR STACK MEMORY!!! */
+#define SET_TEXT_RESULT(res, val) \
+( \
+ (res)->type |= AR_TEXT, \
+ (res)->text = (char *)(val) \
+)
+
+/* NOTE: always allocate new memory for val! DON'T USE STATIC OR STACK MEMORY!!! */
+#define SET_MSG_RESULT(res, val) \
+( \
+ (res)->type |= AR_MESSAGE, \
+ (res)->msg = (char *)(val) \
+)
+
+#endif