Skip to content

Commit

Permalink
Merge pull request #6 from v-zhuravlev/testing
Browse files Browse the repository at this point in the history
0.3 release (for Zabbix 3.0)
  • Loading branch information
v-zhuravlev committed Feb 29, 2016
2 parents 5c25e79 + 59bb34c commit 2a5fbf9
Show file tree
Hide file tree
Showing 10 changed files with 809 additions and 7 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ RTU version also features:
- pkg-config
- Prereq: Download and install libmodbus
- Run `autogen.sh`
- `./configure --enable-zabbix-3` or `./configure --enable-zabbix-2`
- `make`
- `make install`

## 2.B Install from tar.gz sources
Download from https://share.zabbix.com/dir-libraries/zabbix-loadable-modules/modbus-loadable-module
- `tar zxvpf libzbxmodbus-0.1.tar.gz`
- `cd libzbxmodbus-0.1`
- `./configure`
- `./configure --enable-zabbix-3` or `./configure --enable-zabbix-2`
- `make`
- `make install`

Expand Down Expand Up @@ -86,7 +87,8 @@ and some optional params can be provided as well:
* **datatype(optional):**
provide datatype as single char:
b - for MODBUS_BIT
i - for MODBUS_INTEGER
i - for MODBUS_INTEGER (unsigned)
s - for MODBUS_SIGNED_INT (NOTE: in Zabbix use 'Type of information' Numeric(float) )
l - for MODBUS_LONG
f - for MODBUS_FLOAT
otherwise, defaults will be used:
Expand Down
40 changes: 39 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
AC_INIT([libzbxmodbus], [0.2])
AC_INIT([libzbxmodbus], [0.3])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/modbus.c])
Expand All @@ -22,6 +22,44 @@ PKG_CHECK_MODULES([LIBMODBUS], [libmodbus >= 3.1.1], [],
libmodbus from http://libmodbus.org/
------------------------------------------])
])

#Zabbix 2.4 / Zabbix 3.0 chooser
AC_ARG_ENABLE([zabbix-2],
[ --enable-zabbix-2 Build with Zabbix 2.4 headers],
[case "${enableval}" in
yes) zabbix_2=true ;;
no) zabbix_2=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-zabbix-2]) ;;
esac],[zabbix_2=false])
AM_CONDITIONAL([ZABBIX_2], [test x$zabbix_2 = xtrue])

AC_ARG_ENABLE([zabbix-3],
[ --enable-zabbix-3 Build with Zabbix 3.0 headers],
[case "${enableval}" in
yes) zabbix_3=true ;;
no) zabbix_3=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-zabbix-3]) ;;
esac],[zabbix_3=false])
AM_CONDITIONAL([ZABBIX_3], [test x$zabbix_3 = xtrue])


if [test "x${zabbix_2}" = xfalse && test "x${zabbix_3}" = xfalse] ; then
AC_MSG_ERROR([
------------------------------------------
Please specify the version of Zabbix module will be used with: by providing either
--enable-zabbix-2 or --enable-zabbix-3 key but not both.
------------------------------------------])
fi

if [test "x${zabbix_2}" = xtrue && test "x${zabbix_3}" = xtrue] ; then
AC_MSG_ERROR([
------------------------------------------
Please specify the version of Zabbix module will be used with: by providing either
--enable-zabbix-2 or --enable-zabbix-3 key but not both.
------------------------------------------])
fi


LT_INIT
AC_DISABLE_STATIC([yes])
AC_PROG_CC
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
138 changes: 138 additions & 0 deletions include/zabbix-3.0/module.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
/*
** Zabbix
** Copyright (C) 2001-2016 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

#include "zbxtypes.h"

#define ZBX_MODULE_OK 0
#define ZBX_MODULE_FAIL -1

#define ZBX_MODULE_API_VERSION_ONE 1

#define get_rkey(request) (request)->key
#define get_rparams_num(request) (request)->nparam
#define get_rparam(request, num) ((request)->nparam > num ? (request)->params[num] : NULL)

/* flags for command */
#define CF_HAVEPARAMS 0x01 /* item accepts either optional or mandatory parameters */
#define CF_MODULE 0x02 /* item is defined in a loadable module */
#define CF_USERPARAMETER 0x04 /* item is defined as user parameter */

typedef struct
{
char *key;
unsigned flags;
int (*function)();
char *test_param; /* item test parameters; user parameter items keep command here */
}
ZBX_METRIC;

/* agent request structure */
typedef struct
{
char *key;
int nparam;
char **params;
zbx_uint64_t lastlogsize;
int mtime;
}
AGENT_REQUEST;

typedef struct
{
char *value;
char *source;
int timestamp;
int severity;
int logeventid;
}
zbx_log_t;

/* agent result types */
#define AR_UINT64 0x01
#define AR_DOUBLE 0x02
#define AR_STRING 0x04
#define AR_TEXT 0x08
#define AR_LOG 0x10
#define AR_MESSAGE 0x20
#define AR_META 0x40

/* agent return structure */
typedef struct
{
zbx_uint64_t lastlogsize; /* meta information */
zbx_uint64_t ui64;
double dbl;
char *str;
char *text;
char *msg; /* possible error message */
zbx_log_t *log;
int type; /* flags: see AR_* above */
int mtime; /* meta information */
}
AGENT_RESULT;

/* 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_LOG_RESULT(res, val) \
( \
(res)->type |= AR_LOG, \
(res)->log = (zbx_log_t *)(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) \
)

#define SYSINFO_RET_OK 0
#define SYSINFO_RET_FAIL 1

#endif
Loading

0 comments on commit 2a5fbf9

Please sign in to comment.