summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2004-09-10 17:47:32 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2004-09-10 17:47:32 +0000
commitf7f74958b31cb3c8009d5946497911bfcf00cac0 (patch)
tree4555db9646840429880875d36cae0f8b0de13b2d /include
parentd037e4b58b4c81f46d68c1dab66c22e130599d35 (diff)
downloadzabbix-f7f74958b31cb3c8009d5946497911bfcf00cac0.tar.gz
zabbix-f7f74958b31cb3c8009d5946497911bfcf00cac0.tar.xz
zabbix-f7f74958b31cb3c8009d5946497911bfcf00cac0.zip
- added support for custom multiplier (Alexei)
- added column items.formula (Alexei) - added support of SNMPv3 (Alexei) - added columns snmpv3_* to table items (Alexei) git-svn-id: svn://svn.zabbix.com/trunk@1420 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'include')
-rw-r--r--include/common.h17
-rw-r--r--include/db.h7
-rw-r--r--include/functions.c32
3 files changed, 47 insertions, 9 deletions
diff --git a/include/common.h b/include/common.h
index 00ca4aa2..27218abc 100644
--- a/include/common.h
+++ b/include/common.h
@@ -20,8 +20,9 @@
/*#define TESTTEST*/
+/*
#define ZABBIX_THREADS
-
+*/
#define IT_HELPDESK
#ifndef ZABBIX_COMMON_H
@@ -59,6 +60,20 @@
#define ITEM_VALUE_TYPE_FLOAT 0
#define ITEM_VALUE_TYPE_STR 1
+/* Item snmpv3 security levels */
+#define ITEM_SNMPV3_SECURITYLEVEL_NOAUTHNOPRIV 0
+#define ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV 1
+#define ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV 2
+
+/* Item multiplier types */
+#define ITEM_MULTIPLIER_DO_NOT_USE 0
+#define ITEM_MULTIPLIER_USE 1
+
+/* Item delta types */
+#define ITEM_STORE_AS_IS 0
+#define ITEM_STORE_SPEED_PER_SECOND 1
+#define ITEM_STORE_SIMPLE_CHANGE 2
+
/* Recipient types for actions */
#define RECIPIENT_TYPE_USER 0
#define RECIPIENT_TYPE_GROUP 1
diff --git a/include/db.h b/include/db.h
index 4ca85592..620a8899 100644
--- a/include/db.h
+++ b/include/db.h
@@ -112,6 +112,13 @@ DB_ITEM
int delta;
int multiplier;
char *units;
+
+ char *snmpv3_securityname;
+ int snmpv3_securitylevel;
+ char *snmpv3_authpassphrase;
+ char *snmpv3_privpassphrase;
+
+ char *formula;
};
DB_FUNCTION
diff --git a/include/functions.c b/include/functions.c
index 32b52372..4a838c09 100644
--- a/include/functions.c
+++ b/include/functions.c
@@ -733,7 +733,12 @@ int evaluate_FUNCTION_thread(MYSQL *database, char *value,DB_ITEM *item,char *fu
(SUCCEED == ret) && strlen(item->units)>0)
{
value_float=atof(value);
- value_float=value_float*pow(1024,item->multiplier);
+ /* Use multiplier ? */
+/* if(item->multiplier == 1)
+ {
+ zabbix_log( LOG_LEVEL_WARNING, "HMM [%s] [%f] [%f]",item->formula, value_float, atof(item->formula));
+ value_float=value_float*atof(item->formula);
+ }*/
value_float_abs=abs(value_float);
if(value_float_abs<1024)
{
@@ -993,7 +998,11 @@ int evaluate_FUNCTION(char *value,DB_ITEM *item,char *function,char *parameter,
(SUCCEED == ret) && strlen(item->units)>0)
{
value_float=atof(value);
- value_float=value_float*pow(1024,item->multiplier);
+ /* Custom multiplier? */
+ if(item->multiplier == 1)
+ {
+ value_float=value_float*atof(item->formula);
+ }
value_float_abs=abs(value_float);
if(value_float_abs<1024)
{
@@ -2231,6 +2240,7 @@ void process_new_value_thread(MYSQL *database, DB_ITEM *item,char *value)
char sql[MAX_STRING_LEN];
char value_esc[MAX_STRING_LEN];
double value_double;
+ double multiplier;
char *e;
now = time(NULL);
@@ -2238,17 +2248,23 @@ void process_new_value_thread(MYSQL *database, DB_ITEM *item,char *value)
zabbix_log( LOG_LEVEL_DEBUG, "In process_new_value()");
value_double=strtod(value,&e);
+ if( (item->value_type==ITEM_VALUE_TYPE_FLOAT) && (item->multiplier == ITEM_MULTIPLIER_USE))
+ {
+ multiplier = strtod(item->formula,&e);
+ value_double = value_double * multiplier;
+ }
+
if(item->history>0)
{
if(item->value_type==ITEM_VALUE_TYPE_FLOAT)
{
/* Should we store delta or original value? */
- if(item->delta == 0)
+ if(item->delta == ITEM_STORE_AS_IS)
{
DBadd_history_thread(database, item->itemid,value_double,now);
}
/* Delta as speed of change */
- else if(item->delta == 1)
+ else if(item->delta == ITEM_STORE_SPEED_PER_SECOND)
{
/* Save delta */
if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) )
@@ -2257,7 +2273,7 @@ void process_new_value_thread(MYSQL *database, DB_ITEM *item,char *value)
}
}
/* Real delta: simple difference between values */
- else if(item->delta == 2)
+ else if(item->delta == ITEM_STORE_SIMPLE_CHANGE)
{
/* Save delta */
if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) )
@@ -2278,7 +2294,7 @@ void process_new_value_thread(MYSQL *database, DB_ITEM *item,char *value)
}
- if(item->delta ==0)
+ if(item->delta == ITEM_STORE_AS_IS)
{
if((item->prevvalue_null == 1) || (strcmp(value,item->lastvalue_str) != 0) || (strcmp(item->prevvalue_str,item->lastvalue_str) != 0) )
{
@@ -2298,7 +2314,7 @@ void process_new_value_thread(MYSQL *database, DB_ITEM *item,char *value)
}
}
/* Logic for delta as speed of change */
- else if(item->delta == 1)
+ else if(item->delta == ITEM_STORE_SPEED_PER_SECOND)
{
if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) )
{
@@ -2318,7 +2334,7 @@ void process_new_value_thread(MYSQL *database, DB_ITEM *item,char *value)
item->lastvalue_null=0;
}
/* Real delta: simple difference between values */
- else if(item->delta == 2)
+ else if(item->delta == ITEM_STORE_SIMPLE_CHANGE)
{
if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) )
{