summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-08-02 13:11:47 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-08-02 13:11:47 +0000
commitd9ce56d11dadd2e24897c22fbb31ade19f64ea37 (patch)
tree9820e45b1cff1bd8b72c9baef0c0a5896abb6782 /src
parented36ea4f180c0f109d879653d46c7ab6ef3d37d3 (diff)
downloadzabbix-d9ce56d11dadd2e24897c22fbb31ade19f64ea37.tar.gz
zabbix-d9ce56d11dadd2e24897c22fbb31ade19f64ea37.tar.xz
zabbix-d9ce56d11dadd2e24897c22fbb31ade19f64ea37.zip
Minor changes.
git-svn-id: svn://svn.zabbix.com/trunk@1919 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
-rw-r--r--src/libs/zbxcommon/comms.c21
-rw-r--r--src/zabbix_agent/active.c16
-rw-r--r--src/zabbix_server/functions.c7
-rw-r--r--src/zabbix_server/functions.h2
-rw-r--r--src/zabbix_server/trapper/trapper.c6
5 files changed, 35 insertions, 17 deletions
diff --git a/src/libs/zbxcommon/comms.c b/src/libs/zbxcommon/comms.c
index 153329c5..ada03760 100644
--- a/src/libs/zbxcommon/comms.c
+++ b/src/libs/zbxcommon/comms.c
@@ -1,27 +1,37 @@
#include "common.h"
#include "log.h"
-int comms_create_request(char *host, char *key, char *data, char *request,int maxlen)
+int comms_create_request(char *host, char *key, char *data, char *lastlogsize, char *request,int maxlen)
{
int ret = SUCCEED;
char host_b64[MAX_STRING_LEN];
char key_b64[MAX_STRING_LEN];
char data_b64[MAX_STRING_LEN];
+ char lastlogsize_b64[MAX_STRING_LEN];
memset(host_b64,0,sizeof(host_b64));
memset(key_b64,0,sizeof(key_b64));
memset(data_b64,0,sizeof(data_b64));
+ memset(lastlogsize_b64,0,sizeof(lastlogsize_b64));
str_base64_encode(host, host_b64, strlen(host));
str_base64_encode(key, key_b64, strlen(key));
str_base64_encode(data, data_b64, strlen(data));
+ str_base64_encode(lastlogsize, lastlogsize_b64, strlen(lastlogsize));
- snprintf(request,maxlen,"<req><host>%s</host><key>%s</key><data>%s</data></req>",host_b64,key_b64,data_b64);
+ if(lastlogsize[0]==0)
+ {
+ snprintf(request,maxlen,"<req><host>%s</host><key>%s</key><data>%s</data></req>",host_b64,key_b64,data_b64);
+ }
+ else
+ {
+ snprintf(request,maxlen,"<req><host>%s</host><key>%s</key><data>%s</data><lastlogsize>%s</lastlogsize></req>",host_b64,key_b64,data_b64,lastlogsize_b64);
+ }
return ret;
}
-int comms_parse_response(char *xml,char *host,char *key, char *data, int maxlen)
+int comms_parse_response(char *xml,char *host,char *key, char *data, char *lastlogsize, int maxlen)
{
int ret = SUCCEED;
int i;
@@ -29,22 +39,27 @@ int comms_parse_response(char *xml,char *host,char *key, char *data, int maxlen)
char host_b64[MAX_STRING_LEN];
char key_b64[MAX_STRING_LEN];
char data_b64[MAX_STRING_LEN];
+ char lastlogsize_b64[MAX_STRING_LEN];
memset(host_b64,0,sizeof(host_b64));
memset(key_b64,0,sizeof(key_b64));
memset(data_b64,0,sizeof(data_b64));
+ memset(lastlogsize_b64,0,sizeof(lastlogsize_b64));
xml_get_data(xml, "host", host_b64, sizeof(host_b64)-1);
xml_get_data(xml, "key", key_b64, sizeof(key_b64)-1);
xml_get_data(xml, "data", data_b64, sizeof(data_b64)-1);
+ xml_get_data(xml, "lastlogsize", lastlogsize_b64, sizeof(lastlogsize_b64)-1);
memset(key,0,maxlen);
memset(host,0,maxlen);
memset(data,0,maxlen);
+ memset(lastlogsize,0,maxlen);
str_base64_decode(host_b64, host, &i);
str_base64_decode(key_b64, key, &i);
str_base64_decode(data_b64, data, &i);
+ str_base64_decode(lastlogsize_b64, lastlogsize, &i);
return ret;
}
diff --git a/src/zabbix_agent/active.c b/src/zabbix_agent/active.c
index af2ed074..6c2a4505 100644
--- a/src/zabbix_agent/active.c
+++ b/src/zabbix_agent/active.c
@@ -323,7 +323,7 @@ int get_active_checks(char *server, int port, char *error, int max_error_len)
return SUCCEED;
}
-int send_value(char *server,int port,char *host, char *key,char *value)
+int send_value(char *server,int port,char *host, char *key,char *value, char *lastlogsize)
{
int i,s;
char tosend[1024];
@@ -333,7 +333,7 @@ int send_value(char *server,int port,char *host, char *key,char *value)
struct sockaddr_in myaddr_in;
struct sockaddr_in servaddr_in;
- zabbix_log( LOG_LEVEL_DEBUG, "In send_value()");
+ zabbix_log( LOG_LEVEL_WARNING, "In send_value([%s])",lastlogsize);
servaddr_in.sin_family=AF_INET;
hp=gethostbyname(server);
@@ -372,8 +372,9 @@ int send_value(char *server,int port,char *host, char *key,char *value)
return FAIL;
}
- comms_create_request(host, key, value, tosend,sizeof(tosend)-1);
+ comms_create_request(host, key, value, lastlogsize, tosend, sizeof(tosend)-1);
// snprintf(tosend,sizeof(tosend)-1,"%s:%s\n",shortname,value);
+ zabbix_log( LOG_LEVEL_WARNING, "XML before sonding [%s]",tosend);
if( sendto(s,tosend,strlen(tosend),0,(struct sockaddr *)&servaddr_in,sizeof(struct sockaddr_in)) == -1 )
{
@@ -413,7 +414,7 @@ int send_value(char *server,int port,char *host, char *key,char *value)
int process_active_checks(char *server, int port)
{
char value[MAX_STRING_LEN];
- char value_tmp[MAX_STRING_LEN];
+ char lastlogsize[MAX_STRING_LEN];
int i, now, count;
int ret = SUCCEED;
@@ -441,9 +442,9 @@ int process_active_checks(char *server, int port)
{
// snprintf(shortname, MAX_STRING_LEN-1,"%s:%s",CONFIG_HOSTNAME,metrics[i].key);
// zabbix_log( LOG_LEVEL_DEBUG, "%s",shortname);
- snprintf(value_tmp, MAX_STRING_LEN-1,"%d:%s",metrics[i].lastlogsize,value);
+ snprintf(lastlogsize, MAX_STRING_LEN-1,"%d",metrics[i].lastlogsize);
- if(send_value(server,port,CONFIG_HOSTNAME,metrics[i].key,value_tmp) == FAIL)
+ if(send_value(server,port,CONFIG_HOSTNAME,metrics[i].key,value,lastlogsize) == FAIL)
{
ret = FAIL;
break;
@@ -461,11 +462,12 @@ int process_active_checks(char *server, int port)
}
else
{
+ lastlogsize[0]=0;
process(metrics[i].key, value);
// snprintf(shortname, MAX_STRING_LEN-1,"%s:%s",CONFIG_HOSTNAME,metrics[i].key);
// zabbix_log( LOG_LEVEL_DEBUG, "%s",shortname);
- if(send_value(server,port,CONFIG_HOSTNAME,metrics[i].key,value) == FAIL)
+ if(send_value(server,port,CONFIG_HOSTNAME,metrics[i].key,value,lastlogsize) == FAIL)
{
ret = FAIL;
break;
diff --git a/src/zabbix_server/functions.c b/src/zabbix_server/functions.c
index 48f6016c..b4dc9000 100644
--- a/src/zabbix_server/functions.c
+++ b/src/zabbix_server/functions.c
@@ -400,10 +400,9 @@ int process_data(int sockfd,char *server,char *key,char *value,char *lastlogsize
DB_RESULT *result;
DB_ITEM item;
char *s;
- char lastlogsize[MAX_STRING_LEN];
int update_tr;
- zabbix_log( LOG_LEVEL_WARNING, "In process_data([%s],[%s],[%s])",server,key,value);
+ zabbix_log( LOG_LEVEL_WARNING, "In process_data([%s],[%s],[%s],[%s])",server,key,value,lastlogsize);
snprintf(sql,sizeof(sql)-1,"select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snmp_oid,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.value_type,i.trapper_hosts,i.delta,i.units,i.multiplier,i.formula from items i,hosts h where h.status=%d and h.hostid=i.hostid and h.host='%s' and i.key_='%s' and i.status=%d and i.type in (%d,%d)", HOST_STATUS_MONITORED, server, key, ITEM_STATUS_ACTIVE, ITEM_TYPE_TRAPPER, ITEM_TYPE_ZABBIX_ACTIVE);
result = DBselect(sql);
@@ -475,7 +474,7 @@ int process_data(int sockfd,char *server,char *key,char *value,char *lastlogsize
s=value;
if(strncmp(item.key,"log[",4)==0)
{
- s=strchr(value,':');
+/* s=strchr(value,':');
if(s == NULL)
{
zabbix_log(LOG_LEVEL_WARNING, "Wrong value received for item [%s:%s]", item.host, item.key);
@@ -485,7 +484,7 @@ int process_data(int sockfd,char *server,char *key,char *value,char *lastlogsize
s++;
strncpy(lastlogsize, value, s-value-1);
- lastlogsize[s-value-1]=0;
+ lastlogsize[s-value-1]=0;*/
item.lastlogsize=atoi(lastlogsize);
zabbix_log(LOG_LEVEL_DEBUG, "Value [%s] S [%s] Lastlogsize [%s] [%d]", value, s, lastlogsize, s-value-1);
diff --git a/src/zabbix_server/functions.h b/src/zabbix_server/functions.h
index c2859b7b..52191bb0 100644
--- a/src/zabbix_server/functions.h
+++ b/src/zabbix_server/functions.h
@@ -25,7 +25,7 @@
#include "db.h"
void update_triggers (int itemid);
-int process_data(int sockfd,char *server,char *key, char *value);
+int process_data(int sockfd,char *server,char *key, char *value,char *lastlogsize);
void process_new_value(DB_ITEM *item,char *value,int *update_triggers);
#endif
diff --git a/src/zabbix_server/trapper/trapper.c b/src/zabbix_server/trapper/trapper.c
index e3216ba6..37150719 100644
--- a/src/zabbix_server/trapper/trapper.c
+++ b/src/zabbix_server/trapper/trapper.c
@@ -59,6 +59,7 @@ int process_trap(int sockfd,char *s, int max_len)
char result[MAX_STRING_LEN];
char host_b64[MAX_STRING_LEN],key_b64[MAX_STRING_LEN],value_b64[MAX_STRING_LEN];
char host_dec[MAX_STRING_LEN],key_dec[MAX_STRING_LEN],value_dec[MAX_STRING_LEN];
+ char lastlogsize[MAX_STRING_LEN];
int ret=SUCCEED;
int i;
@@ -83,7 +84,7 @@ int process_trap(int sockfd,char *s, int max_len)
{
zabbix_log( LOG_LEVEL_WARNING, "XML received [%s]", s);
- comms_parse_response(s,host_dec,key_dec, value_dec, sizeof(host_dec)-1);
+ comms_parse_response(s,host_dec,key_dec,value_dec,lastlogsize, sizeof(host_dec)-1);
server=host_dec;
value_string=value_dec;
@@ -114,9 +115,10 @@ int process_trap(int sockfd,char *s, int max_len)
}
/* It points to ':', so have to increment */
value_string++;
+ lastlogsize[0]=0;
}
- ret=process_data(sockfd,server,key,value_string);
+ ret=process_data(sockfd,server,key,value_string,lastlogsize);
if( SUCCEED == ret)
{
snprintf(result,sizeof(result)-1,"OK\n");