增加ussd统计
This commit is contained in:
@@ -4,57 +4,57 @@
|
|||||||
* Date:
|
* Date:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "logCollector.h"
|
#include "logCollector.h"
|
||||||
#include "mysql.h"
|
#include "mysql.h"
|
||||||
|
|
||||||
/******************************************************/
|
/******************************************************/
|
||||||
/****** Heartbeat Parameter ******/
|
/****** Heartbeat Parameter ******/
|
||||||
/******************************************************/
|
/******************************************************/
|
||||||
DWORD PROC_HEARTBEAT_OID[12]={1,3,6,1,4,1,1373,2,4,10,3};
|
DWORD PROC_HEARTBEAT_OID[12]={1,3,6,1,4,1,1373,2,4,10,3};
|
||||||
int PROC_HEARTBEAT_OIDLEN=11;
|
int PROC_HEARTBEAT_OIDLEN=11;
|
||||||
int sendHeartbeat();
|
int sendHeartbeat();
|
||||||
|
|
||||||
|
|
||||||
/***********Private Functions Declare***********************/
|
/***********Private Functions Declare***********************/
|
||||||
int logColl_initLogSrcArr();
|
int logColl_initLogSrcArr();
|
||||||
int logColl_initAttrDefnArr();
|
int logColl_initAttrDefnArr();
|
||||||
int logColl_getIp(int logSrcArrNo, char *dstIP);
|
int logColl_getIp(int logSrcArrNo, char *dstIP);
|
||||||
int logColl_mainProc();
|
int logColl_mainProc();
|
||||||
int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr);
|
int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr);
|
||||||
int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr);
|
int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr);
|
||||||
int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu);
|
int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu);
|
||||||
int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr);
|
int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr);
|
||||||
int logColl_mkVarArr(int logSrcArrNo, var_list * varArr);
|
int logColl_mkVarArr(int logSrcArrNo, var_list * varArr);
|
||||||
int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu);
|
int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu);
|
||||||
|
|
||||||
/***********Global Var Declare And Init*********************/
|
/***********Global Var Declare And Init*********************/
|
||||||
int logColl_timerCount = 0;
|
int logColl_timerCount = 0;
|
||||||
static MYSQL *dbConn;
|
static MYSQL *dbConn;
|
||||||
static char errorStatusDescArr[19][30] =
|
static char errorStatusDescArr[19][30] =
|
||||||
{ "NoError", "TooBig", "NoSuchName", "BadValue", "ReadOnly",
|
{ "NoError", "TooBig", "NoSuchName", "BadValue", "ReadOnly",
|
||||||
"GenErr", "NoAccess", "WrongType", "WrongLength", "WrongEncoding",
|
"GenErr", "NoAccess", "WrongType", "WrongLength", "WrongEncoding",
|
||||||
"wrongValue", "noCreation", "inconsistentValue", "resourceUnavailabe",
|
"wrongValue", "noCreation", "inconsistentValue", "resourceUnavailabe",
|
||||||
"commitFailed",
|
"commitFailed",
|
||||||
"UndoFailed", "AuthorizationError", "NoWritable", "inconsistentName"
|
"UndoFailed", "AuthorizationError", "NoWritable", "inconsistentName"
|
||||||
};
|
};
|
||||||
static int MaxErrorStatusNum = 19;
|
static int MaxErrorStatusNum = 19;
|
||||||
static unitLogSrc logSrcArr[MaxLogSrcNum];
|
static unitLogSrc logSrcArr[MaxLogSrcNum];
|
||||||
static unitAttrDefn attrDefnArr[MaxAttrDefnNum];
|
static unitAttrDefn attrDefnArr[MaxAttrDefnNum];
|
||||||
|
|
||||||
//log file pointer
|
//log file pointer
|
||||||
static FILE *logFp;
|
static FILE *logFp;
|
||||||
int old_day;
|
int old_day;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*Function :logCollInit
|
*Function :logCollInit
|
||||||
*Input :Null
|
*Input :Null
|
||||||
*Output :Return 1: ok, 0:failed
|
*Output :Return 1: ok, 0:failed
|
||||||
*Descript :Must call this function at first.
|
*Descript :Must call this function at first.
|
||||||
*/
|
*/
|
||||||
int logCollectorInit()
|
int logCollectorInit()
|
||||||
{
|
{
|
||||||
long l_time;
|
long l_time;
|
||||||
struct tm *t;
|
struct tm *t;
|
||||||
|
|
||||||
@@ -87,29 +87,28 @@ int logCollectorInit()
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************
|
/*************************************************
|
||||||
Function: // sendHeartbeat
|
Function: // sendHeartbeat
|
||||||
Description: // Send process heartbeat to beatProc
|
Description: // Send process heartbeat to beatProc
|
||||||
Calls: // snmp_send
|
Calls: // snmp_send
|
||||||
Called By: // logCollectorTimer
|
Called By: // logCollectorTimer
|
||||||
Table Accessed: //
|
Table Accessed: //
|
||||||
Table Updated: //
|
Table Updated: //
|
||||||
Input: //
|
Input: //
|
||||||
Output: //
|
Output: //
|
||||||
Return: // 1:OK; 0:Fail
|
Return: // 1:OK; 0:Fail
|
||||||
Others: //
|
Others: //
|
||||||
*************************************************/
|
*************************************************/
|
||||||
int sendHeartbeat()
|
int sendHeartbeat()
|
||||||
{
|
{
|
||||||
snmp_pdu pdu;
|
snmp_pdu pdu;
|
||||||
snmp_addr addr;
|
snmp_addr addr;
|
||||||
char proc_name[16];
|
char proc_name[16];
|
||||||
|
|
||||||
memset(proc_name,0,16);
|
memset(proc_name,0,16);
|
||||||
sprintf(proc_name,"logCollector");
|
sprintf(proc_name,"logCollector");
|
||||||
|
|
||||||
//pdu
|
//pdu
|
||||||
memset(&pdu,0,sizeof(snmp_pdu));
|
memset(&pdu,0,sizeof(snmp_pdu));
|
||||||
pdu.pdu_type=7;
|
pdu.pdu_type=7;
|
||||||
@@ -140,17 +139,17 @@ int sendHeartbeat()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*Function :logCollTimer
|
*Function :logCollTimer
|
||||||
*Input :Null
|
*Input :Null
|
||||||
*Output :Return 1: ok, 0:failed
|
*Output :Return 1: ok, 0:failed
|
||||||
*Descript :call this function ever 100ms
|
*Descript :call this function ever 100ms
|
||||||
*/
|
*/
|
||||||
unsigned long heartbeat_timeout=0;
|
unsigned long heartbeat_timeout=0;
|
||||||
int logCollectorTimer()
|
int logCollectorTimer()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
if(time(NULL) - heartbeat_timeout > 5)
|
if(time(NULL) - heartbeat_timeout > 5)
|
||||||
@@ -213,17 +212,17 @@ int logCollectorTimer()
|
|||||||
} else {
|
} else {
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*Function :logColl_initLogSrcArr
|
*Function :logColl_initLogSrcArr
|
||||||
*Input :Null
|
*Input :Null
|
||||||
*Output :Return 1: ok, 0:failed
|
*Output :Return 1: ok, 0:failed
|
||||||
*Descript :
|
*Descript :
|
||||||
*/
|
*/
|
||||||
int logColl_initLogSrcArr()
|
int logColl_initLogSrcArr()
|
||||||
{
|
{
|
||||||
char confQuery[400] = "\0";
|
char confQuery[400] = "\0";
|
||||||
MYSQL_RES *confResult = NULL;
|
MYSQL_RES *confResult = NULL;
|
||||||
MYSQL_ROW confRow;
|
MYSQL_ROW confRow;
|
||||||
@@ -304,16 +303,17 @@ int logColl_initLogSrcArr()
|
|||||||
}
|
}
|
||||||
mysql_free_result(confResult);
|
mysql_free_result(confResult);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*Function :logColl_initAttrDefnArr
|
||||||
|
*Input :Null
|
||||||
|
*Output :Return 1: ok, 0:failed
|
||||||
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_initAttrDefnArr()
|
||||||
|
{
|
||||||
|
|
||||||
/*
|
|
||||||
*Function :logColl_initAttrDefnArr
|
|
||||||
*Input :Null
|
|
||||||
*Output :Return 1: ok, 0:failed
|
|
||||||
*Descript :
|
|
||||||
*/
|
|
||||||
int logColl_initAttrDefnArr()
|
|
||||||
{
|
|
||||||
char confQuery[400] = "\0";
|
char confQuery[400] = "\0";
|
||||||
MYSQL_RES *confResult = NULL;
|
MYSQL_RES *confResult = NULL;
|
||||||
MYSQL_ROW confRow;
|
MYSQL_ROW confRow;
|
||||||
@@ -325,14 +325,13 @@ int logColl_initAttrDefnArr()
|
|||||||
"level_6,level_7,level_8,level_9,level_10";
|
"level_6,level_7,level_8,level_9,level_10";
|
||||||
//init if first
|
//init if first
|
||||||
for (i = 0; i < MaxAttrDefnNum; i++) {
|
for (i = 0; i < MaxAttrDefnNum; i++) {
|
||||||
attrDefnArr[arrayNo].sysTypeNo = 0;
|
attrDefnArr[i].sysTypeNo = 0;
|
||||||
attrDefnArr[arrayNo].fieldObjIdStr[0] = 0;
|
attrDefnArr[i].fieldObjIdStr[0] = 0;
|
||||||
attrDefnArr[arrayNo].fieldName[0] = 0;
|
attrDefnArr[i].fieldName[0] = 0;
|
||||||
attrDefnArr[arrayNo].valueType = 0;
|
attrDefnArr[i].valueType = 0;
|
||||||
attrDefnArr[arrayNo].valueLen = 0;
|
attrDefnArr[i].valueLen = 0;
|
||||||
//attrDefnArr[arrayNo].initValue;
|
//attrDefnArr[arrayNo].initValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//load subscriber data into array one bye one sysTypeNo
|
//load subscriber data into array one bye one sysTypeNo
|
||||||
for (logSrcArrNo = 0; logSrcArrNo < MaxLogSrcNum; logSrcArrNo++) {
|
for (logSrcArrNo = 0; logSrcArrNo < MaxLogSrcNum; logSrcArrNo++) {
|
||||||
//if (logSrcArr[logSrcArrNo].isEnable <= 0) {
|
//if (logSrcArr[logSrcArrNo].isEnable <= 0) {
|
||||||
@@ -346,6 +345,7 @@ int logColl_initAttrDefnArr()
|
|||||||
levelSelect, logSrcArr[logSrcArrNo].sysTypeNo,
|
levelSelect, logSrcArr[logSrcArrNo].sysTypeNo,
|
||||||
logSrcArr[logSrcArrNo].dataTypeNo, queryOrderBy);
|
logSrcArr[logSrcArrNo].dataTypeNo, queryOrderBy);
|
||||||
confResult = (MYSQL_RES *) mysql_getres(dbConn, confQuery);
|
confResult = (MYSQL_RES *) mysql_getres(dbConn, confQuery);
|
||||||
|
|
||||||
if (confResult == NULL) {
|
if (confResult == NULL) {
|
||||||
omcLog(logFp, " Database may be stopped,Please check!");
|
omcLog(logFp, " Database may be stopped,Please check!");
|
||||||
return (0);
|
return (0);
|
||||||
@@ -380,17 +380,19 @@ int logColl_initAttrDefnArr()
|
|||||||
}
|
}
|
||||||
mysql_free_result(confResult);
|
mysql_free_result(confResult);
|
||||||
}
|
}
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
return (1);
|
||||||
*Function :logColl_getIp
|
}
|
||||||
*Input :Null
|
|
||||||
*Output :Return 1: ok, 0:failed
|
/*
|
||||||
*Descript :
|
*Function :logColl_getIp
|
||||||
*/
|
*Input :Null
|
||||||
int logColl_getIp(int logSrcArrNo, char *dstIP)
|
*Output :Return 1: ok, 0:failed
|
||||||
{
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_getIp(int logSrcArrNo, char *dstIP)
|
||||||
|
{
|
||||||
|
|
||||||
MYSQL_RES *tmpResult;
|
MYSQL_RES *tmpResult;
|
||||||
MYSQL_ROW tmpRow;
|
MYSQL_ROW tmpRow;
|
||||||
char tmpQuery[400] = "\0";
|
char tmpQuery[400] = "\0";
|
||||||
@@ -409,9 +411,9 @@ int logColl_getIp(int logSrcArrNo, char *dstIP)
|
|||||||
}
|
}
|
||||||
if ((tmpRow = mysql_fetch_row(tmpResult)) != NULL) {
|
if ((tmpRow = mysql_fetch_row(tmpResult)) != NULL) {
|
||||||
strcpy(dstIP, tmpRow[0]);
|
strcpy(dstIP, tmpRow[0]);
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
omcLog(logFp, " dstIP=%s", dstIP);
|
omcLog(logFp, " dstIP=%s", dstIP);
|
||||||
#endif
|
#endif
|
||||||
mysql_free_result(tmpResult);
|
mysql_free_result(tmpResult);
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
@@ -419,33 +421,38 @@ int logColl_getIp(int logSrcArrNo, char *dstIP)
|
|||||||
logSrcArr[logSrcArrNo].sysTypeNo,
|
logSrcArr[logSrcArrNo].sysTypeNo,
|
||||||
logSrcArr[logSrcArrNo].sysNo,
|
logSrcArr[logSrcArrNo].sysNo,
|
||||||
logSrcArr[logSrcArrNo].subSysNo);
|
logSrcArr[logSrcArrNo].subSysNo);
|
||||||
|
mysql_free_result(tmpResult); // 正确释放结果集
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*Function :logCollProc
|
*Function :logCollProc
|
||||||
*Input :Null
|
*Input :Null
|
||||||
*Output :Return 1: ok, 0:failed
|
*Output :Return 1: ok, 0:failed
|
||||||
*Descript :
|
*Descript :
|
||||||
*/
|
*/
|
||||||
int logColl_mainProc()
|
int logColl_mainProc()
|
||||||
{
|
{
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int idleLogSrcCount = 0;
|
int idleLogSrcCount = 0;
|
||||||
snmp_pdu tmpPdu;
|
snmp_pdu tmpPdu;
|
||||||
//var_list tmpVarArr[MaxVarNum];
|
//var_list tmpVarArr[MaxVarNum];
|
||||||
snmp_addr tmpAddr;
|
snmp_addr tmpAddr;
|
||||||
|
// init
|
||||||
|
memset(&tmpPdu, 0, sizeof(snmp_pdu));
|
||||||
|
memset(&tmpAddr, 0, sizeof(snmp_addr));
|
||||||
|
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
//system("clear");
|
//system("clear");
|
||||||
clrscr();
|
clrscr();
|
||||||
printf
|
printf
|
||||||
("\nId sysId systemIp log/msgStat bgnNo/logNo/endNo sleepCount/sleepTime Desc");
|
("\nId sysId systemIp log/msgStat bgnNo/logNo/endNo sleepCount/sleepTime Desc");
|
||||||
#endif
|
#endif
|
||||||
for (i = 0; i < MaxLogSrcNum; i++) {
|
for (i = 0; i < MaxLogSrcNum; i++) {
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
printf("\n%d %d-%d-%d %s %d/%d \t %lu/%lu/%lu %d/%d \t%s ", i,
|
printf("\n%d %d-%d-%d %s %d/%d \t %lu/%lu/%lu %d/%d \t%s ", i,
|
||||||
logSrcArr[i].sysTypeNo, logSrcArr[i].sysNo,
|
logSrcArr[i].sysTypeNo, logSrcArr[i].sysNo,
|
||||||
logSrcArr[i].subSysNo, logSrcArr[i].dstIP,
|
logSrcArr[i].subSysNo, logSrcArr[i].dstIP,
|
||||||
@@ -453,7 +460,7 @@ int logColl_mainProc()
|
|||||||
logSrcArr[i].bgnNo, logSrcArr[i].logNo, logSrcArr[i].endNo,
|
logSrcArr[i].bgnNo, logSrcArr[i].logNo, logSrcArr[i].endNo,
|
||||||
logSrcArr[i].sleepCount, logSrcArr[i].sleepTime,
|
logSrcArr[i].sleepCount, logSrcArr[i].sleepTime,
|
||||||
logSrcArr[i].desc);
|
logSrcArr[i].desc);
|
||||||
#endif
|
#endif
|
||||||
if (logSrcArr[i].isEnable < 1) {
|
if (logSrcArr[i].isEnable < 1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -471,7 +478,7 @@ int logColl_mainProc()
|
|||||||
{
|
{
|
||||||
//not receive message or received invaild message
|
//not receive message or received invaild message
|
||||||
//write log
|
//write log
|
||||||
/*
|
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
omcLog(logFp,"%d %d-%d-%d %s %d/%d \t %lu/%lu/%lu %d/%d \t%s ", i,
|
omcLog(logFp,"%d %d-%d-%d %s %d/%d \t %lu/%lu/%lu %d/%d \t%s ", i,
|
||||||
logSrcArr[i].sysTypeNo,logSrcArr[i].sysNo,logSrcArr[i].subSysNo,
|
logSrcArr[i].sysTypeNo,logSrcArr[i].sysNo,logSrcArr[i].subSysNo,
|
||||||
@@ -481,7 +488,7 @@ int logColl_mainProc()
|
|||||||
logSrcArr[i].sleepCount,logSrcArr[i].sleepTime,
|
logSrcArr[i].sleepCount,logSrcArr[i].sleepTime,
|
||||||
logSrcArr[i].desc);
|
logSrcArr[i].desc);
|
||||||
#endif
|
#endif
|
||||||
*/
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -521,12 +528,12 @@ int logColl_mainProc()
|
|||||||
sprintf(logSrcArr[i].desc, "No new log");
|
sprintf(logSrcArr[i].desc, "No new log");
|
||||||
logSrcArr[i].logState = nWaitLog;
|
logSrcArr[i].logState = nWaitLog;
|
||||||
logSrcArr[i].msgState = nIdle;
|
logSrcArr[i].msgState = nIdle;
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
omcLog(logFp, "No new log %s %lu/%lu/%lu \t%s ",
|
omcLog(logFp, "No new log %s %lu/%lu/%lu \t%s ",
|
||||||
logSrcArr[i].dstIP, logSrcArr[i].bgnNo,
|
logSrcArr[i].dstIP, logSrcArr[i].bgnNo,
|
||||||
logSrcArr[i].logNo, logSrcArr[i].endNo,
|
logSrcArr[i].logNo, logSrcArr[i].endNo,
|
||||||
logSrcArr[i].dataStoreTable);
|
logSrcArr[i].dataStoreTable);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -548,12 +555,12 @@ int logColl_mainProc()
|
|||||||
sprintf(logSrcArr[i].desc, "No new log");
|
sprintf(logSrcArr[i].desc, "No new log");
|
||||||
logSrcArr[i].logState = nWaitLog;
|
logSrcArr[i].logState = nWaitLog;
|
||||||
logSrcArr[i].msgState = nIdle;
|
logSrcArr[i].msgState = nIdle;
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
omcLog(logFp, "No new log %s %lu/%lu/%lu \t%s ",
|
omcLog(logFp, "No new log %s %lu/%lu/%lu \t%s ",
|
||||||
logSrcArr[i].dstIP, logSrcArr[i].bgnNo,
|
logSrcArr[i].dstIP, logSrcArr[i].bgnNo,
|
||||||
logSrcArr[i].logNo, logSrcArr[i].endNo,
|
logSrcArr[i].logNo, logSrcArr[i].endNo,
|
||||||
logSrcArr[i].dataStoreTable);
|
logSrcArr[i].dataStoreTable);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -607,9 +614,9 @@ int logColl_mainProc()
|
|||||||
break;
|
break;
|
||||||
} //end of switch()
|
} //end of switch()
|
||||||
} //end of for(..)
|
} //end of for(..)
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
printf("\n");
|
printf("\n");
|
||||||
#endif
|
#endif
|
||||||
if (idleLogSrcCount == MaxLogSrcNum) {
|
if (idleLogSrcCount == MaxLogSrcNum) {
|
||||||
//clear the msg buffer
|
//clear the msg buffer
|
||||||
snmp_receive(&tmpPdu, &tmpAddr);
|
snmp_receive(&tmpPdu, &tmpAddr);
|
||||||
@@ -617,17 +624,18 @@ int logColl_mainProc()
|
|||||||
} else {
|
} else {
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*Function :logColl_sendMsg
|
*Function :logColl_sendMsg
|
||||||
*Input :Null
|
*Input :Null
|
||||||
*Output :Return 1: ok, 0:failed
|
*Output :Return 1: ok, 0:failed
|
||||||
*Descript :
|
*Descript :
|
||||||
*/
|
*/
|
||||||
int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (logColl_mkAddr(logSrcArrNo, addr) < 1) {
|
if (logColl_mkAddr(logSrcArrNo, addr) < 1) {
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@@ -635,11 +643,15 @@ int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (snmp_send(pdu, addr) > 0) {
|
if (snmp_send(pdu, addr) > 0) {
|
||||||
|
|
||||||
sprintf(logSrcArr[logSrcArrNo].desc, "send snmp message ok!");
|
sprintf(logSrcArr[logSrcArrNo].desc, "send snmp message ok!");
|
||||||
omcLog(logFp, "Send request snmp package wait for response, %s",logSrcArr[logSrcArrNo].dataStoreTable);
|
omcLog(logFp, "Send request snmp package wait for response, %s",logSrcArr[logSrcArrNo].dataStoreTable);
|
||||||
logSrcArr[logSrcArrNo].msgState = nWaitResponse;
|
logSrcArr[logSrcArrNo].msgState = nWaitResponse;
|
||||||
return (1);
|
return (1);
|
||||||
} else {
|
} else {
|
||||||
|
// printf("failed to send snmp msg,remote ip=%x,remote port=%d",
|
||||||
|
// addr->remote_ip, addr->remote_port);
|
||||||
|
|
||||||
//write log
|
//write log
|
||||||
omcLog(logFp,
|
omcLog(logFp,
|
||||||
"failed to send snmp msg,remote ip=%x,remote port=%d",
|
"failed to send snmp msg,remote ip=%x,remote port=%d",
|
||||||
@@ -651,21 +663,25 @@ int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
|||||||
logSrcArr[logSrcArrNo].msgState = nIdle;
|
logSrcArr[logSrcArrNo].msgState = nIdle;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*Function :logColl_recvMsg
|
||||||
|
*Input :Null
|
||||||
|
*Output :Return 1: ok, 0:failed
|
||||||
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
||||||
|
{
|
||||||
|
|
||||||
/*
|
|
||||||
*Function :logColl_recvMsg
|
|
||||||
*Input :Null
|
|
||||||
*Output :Return 1: ok, 0:failed
|
|
||||||
*Descript :
|
|
||||||
*/
|
|
||||||
int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
|
||||||
{
|
|
||||||
int i = *logSrcArrNo;
|
int i = *logSrcArrNo;
|
||||||
int respProcReturn = 0;
|
int respProcReturn = 0;
|
||||||
|
int j;
|
||||||
|
memset(pdu, 0, sizeof(snmp_pdu));
|
||||||
logColl_mkAddr(i, addr);
|
logColl_mkAddr(i, addr);
|
||||||
|
|
||||||
if (snmp_receive(pdu, addr) > 0) {
|
if (snmp_receive(pdu, addr) > 0) {
|
||||||
|
|
||||||
//received msg ok
|
//received msg ok
|
||||||
respProcReturn = logColl_procResp(logSrcArrNo, pdu); //here maybe changed *logSrcArrNo's value
|
respProcReturn = logColl_procResp(logSrcArrNo, pdu); //here maybe changed *logSrcArrNo's value
|
||||||
i = *logSrcArrNo;
|
i = *logSrcArrNo;
|
||||||
@@ -698,7 +714,7 @@ int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//not received msg
|
//not received msg
|
||||||
|
//printf("error:table:%s,systypeNo:%d\n",logSrcArr[i].dataStoreTable,logSrcArr[i].sysTypeNo);
|
||||||
sprintf(logSrcArr[i].desc, "Receive snmp message failed!");
|
sprintf(logSrcArr[i].desc, "Receive snmp message failed!");
|
||||||
logSrcArr[i].waitTimeCount++;
|
logSrcArr[i].waitTimeCount++;
|
||||||
|
|
||||||
@@ -716,16 +732,17 @@ int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
|
|||||||
} //end of if(logSrcArr[i].waitTimeCount == 20)
|
} //end of if(logSrcArr[i].waitTimeCount == 20)
|
||||||
} //end of not received msg
|
} //end of not received msg
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*Function :logColl_mkPdu
|
||||||
|
*Input :Null
|
||||||
|
*Output :Return 1: ok, 0:failed
|
||||||
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
|
||||||
|
{
|
||||||
|
|
||||||
/*
|
|
||||||
*Function :logColl_mkPdu
|
|
||||||
*Input :Null
|
|
||||||
*Output :Return 1: ok, 0:failed
|
|
||||||
*Descript :
|
|
||||||
*/
|
|
||||||
int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
|
|
||||||
{
|
|
||||||
if (logColl_mkVarArr(logSrcArrNo, pdu->var) < 1) {
|
if (logColl_mkVarArr(logSrcArrNo, pdu->var) < 1) {
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@@ -736,17 +753,19 @@ int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
|
|||||||
pdu->error_status = 0x0; //0:no error 1:too big 2:nosuchname 3:badvalue 4:readonly 5:generr
|
pdu->error_status = 0x0; //0:no error 1:too big 2:nosuchname 3:badvalue 4:readonly 5:generr
|
||||||
pdu->error_index = 0x0;
|
pdu->error_index = 0x0;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*Function :logColl_mkAddr
|
||||||
|
*Input :Null
|
||||||
|
*Output :Return 1: ok, 0:failed
|
||||||
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*Function :logColl_mkAddr
|
|
||||||
*Input :Null
|
|
||||||
*Output :Return 1: ok, 0:failed
|
|
||||||
*Descript :
|
|
||||||
*/
|
|
||||||
int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
|
|
||||||
{
|
|
||||||
if (strlen(logSrcArr[logSrcArrNo].dstIP) <= 0) {
|
if (strlen(logSrcArr[logSrcArrNo].dstIP) <= 0) {
|
||||||
omcLog(logFp, "Initing snmp_addr error: Cannot get ip");
|
omcLog(logFp, "Initing snmp_addr error: Cannot get ip");
|
||||||
logSrcArr[logSrcArrNo].logState = nWaitLog;
|
logSrcArr[logSrcArrNo].logState = nWaitLog;
|
||||||
@@ -758,16 +777,17 @@ int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
|
|||||||
addr->remote_port = logSrcArr[logSrcArrNo].dstPort;
|
addr->remote_port = logSrcArr[logSrcArrNo].dstPort;
|
||||||
addr->broadcast = 0;
|
addr->broadcast = 0;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*Function :logColl_mkVarArr
|
||||||
|
*Input :int logSrcArrNo,var_list *varArr
|
||||||
|
*Output :Return 1: ok, 0:failed
|
||||||
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
|
||||||
|
{
|
||||||
|
|
||||||
/*
|
|
||||||
*Function :logColl_mkVarArr
|
|
||||||
*Input :int logSrcArrNo,var_list *varArr
|
|
||||||
*Output :Return 1: ok, 0:failed
|
|
||||||
*Descript :
|
|
||||||
*/
|
|
||||||
int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
|
|
||||||
{
|
|
||||||
var_list *unitVar;
|
var_list *unitVar;
|
||||||
int i, varCount = 0;
|
int i, varCount = 0;
|
||||||
int totalMsgLen = 0;
|
int totalMsgLen = 0;
|
||||||
@@ -822,22 +842,24 @@ int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
|
|||||||
logSrcArr[logSrcArrNo].totalVarNum = varCount;
|
logSrcArr[logSrcArrNo].totalVarNum = varCount;
|
||||||
logSrcArr[logSrcArrNo].varNum = varCount + 1;
|
logSrcArr[logSrcArrNo].varNum = varCount + 1;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*Function :logColl_procResp
|
||||||
|
*Input :Null
|
||||||
|
*Output : 1 : ok,
|
||||||
|
* : 0 : invailed message(unmatched requestId,objectId,pduType or message format error)
|
||||||
|
* :-1 : error message(varType or errorState > 0)
|
||||||
|
*Descript :
|
||||||
|
*/
|
||||||
|
int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*Function :logColl_procResp
|
|
||||||
*Input :Null
|
|
||||||
*Output : 1 : ok,
|
|
||||||
* : 0 : invailed message(unmatched requestId,objectId,pduType or message format error)
|
|
||||||
* :-1 : error message(varType or errorState > 0)
|
|
||||||
*Descript :
|
|
||||||
*/
|
|
||||||
int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|
||||||
{
|
|
||||||
int i, j, logSrcArrNo, tlvCount;
|
int i, j, logSrcArrNo, tlvCount;
|
||||||
char tmpQuery[3500] = "\0";
|
char tmpQuery[5000] = "\0";
|
||||||
char tmpValue[3000] = "\0";
|
char tmpValue[5000] = "\0";
|
||||||
int tlvLen = 0;
|
int tlvLen = 0;
|
||||||
int tlvIntValue = 0;
|
int tlvIntValue = 0;
|
||||||
char tlvAscValue[512] = "\0";
|
char tlvAscValue[512] = "\0";
|
||||||
@@ -853,9 +875,9 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
}
|
}
|
||||||
logSrcArrNo = *oldlogSrcArrNo;
|
logSrcArrNo = *oldlogSrcArrNo;
|
||||||
|
|
||||||
#if logColl_DEBUG
|
#if logColl_DEBUG
|
||||||
// omcLog(logFp," ----- Processing logSrcArr[%d]'s response message ",logSrcArrNo);
|
omcLog(logFp," ----- Processing logSrcArr[%d]'s response message ",logSrcArrNo);
|
||||||
#endif
|
#endif
|
||||||
//check pdu_type
|
//check pdu_type
|
||||||
if (pdu->pdu_type != nResp) {
|
if (pdu->pdu_type != nResp) {
|
||||||
sprintf(logSrcArr[logSrcArrNo].desc, "Error pdu type:%d(!=Resp%d)",
|
sprintf(logSrcArr[logSrcArrNo].desc, "Error pdu type:%d(!=Resp%d)",
|
||||||
@@ -884,6 +906,7 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < pdu->var_num; i++) {
|
for (i = 0; i < pdu->var_num; i++) {
|
||||||
int errStr;
|
int errStr;
|
||||||
|
|
||||||
@@ -980,6 +1003,8 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
} else { /*get data and update to database */
|
} else { /*get data and update to database */
|
||||||
|
|
||||||
|
//printf("\nstart replace:logColl_procResp1 ");
|
||||||
char tmpUnitValue[1024] = "\0";
|
char tmpUnitValue[1024] = "\0";
|
||||||
char tmpSetStr[1024] = "\0";
|
char tmpSetStr[1024] = "\0";
|
||||||
int attrDefnBgn = logSrcArr[logSrcArrNo].attrDefnArrOffset;
|
int attrDefnBgn = logSrcArr[logSrcArrNo].attrDefnArrOffset;
|
||||||
@@ -996,6 +1021,8 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
AsnDecode(pdu->var[i].msg, pdu->var[i].msglen, 1024, &errStr,
|
AsnDecode(pdu->var[i].msg, pdu->var[i].msglen, 1024, &errStr,
|
||||||
&asnBuffer);
|
&asnBuffer);
|
||||||
|
|
||||||
|
//printf("\nstart replace:logColl_procResp2 ");
|
||||||
|
|
||||||
//get value form asnbuffer and make SQL string
|
//get value form asnbuffer and make SQL string
|
||||||
for (tlvCount = attrDefnBgn; tlvCount < attrDefnEnd;
|
for (tlvCount = attrDefnBgn; tlvCount < attrDefnEnd;
|
||||||
tlvCount++) {
|
tlvCount++) {
|
||||||
@@ -1033,11 +1060,14 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
// printf("\nstart replace:logColl_procResp3 ");
|
||||||
|
|
||||||
sprintf(logSrcArr[logSrcArrNo].desc,
|
sprintf(logSrcArr[logSrcArrNo].desc,
|
||||||
" Invailed vartype(attrDefnArr[%d].valueType=%d)",
|
" Invailed vartype(attrDefnArr[%d].valueType=%d)",
|
||||||
tlvCount, attrDefnArr[tlvCount].valueType);
|
tlvCount, attrDefnArr[tlvCount].valueType);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tlvLen >= 0) {
|
if (tlvLen >= 0) {
|
||||||
if (varCount == 0) {
|
if (varCount == 0) {
|
||||||
strcat(tmpValue, tmpSetStr);
|
strcat(tmpValue, tmpSetStr);
|
||||||
@@ -1046,12 +1076,20 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
strcat(tmpValue, tmpSetStr);
|
strcat(tmpValue, tmpSetStr);
|
||||||
}
|
}
|
||||||
varCount++;
|
varCount++;
|
||||||
|
omcLog(logFp, "tmpSetStr: %s\n", tmpSetStr);
|
||||||
|
omcLog(logFp, "tmpValue: %s\n", tmpValue);
|
||||||
|
// printf("tmpSetStr: %s\n", tmpSetStr);
|
||||||
|
// printf("tmpValue: %s\n", tmpValue);
|
||||||
} else {
|
} else {
|
||||||
omcLog(logFp, " can not get tlvTag[%s]'s tlvValue",
|
omcLog(logFp, " can not get tlvTag[%s]'s tlvValue",
|
||||||
attrDefnArr[tlvCount].fieldObjIdStr);
|
attrDefnArr[tlvCount].fieldObjIdStr);
|
||||||
return (0);
|
//return (0);
|
||||||
}
|
}
|
||||||
} //end of for(..)
|
} //end of for(..)
|
||||||
|
//printf("\nstart replace:logColl_procResp5 ");
|
||||||
|
// printf("dataStoreTable length: %s\n", logSrcArr[logSrcArrNo].dataStoreTable);
|
||||||
|
|
||||||
|
omcLog(logFp, "Make Var,logNo=%ld,%s",logSrcArr[logSrcArrNo].logNo,logSrcArr[logSrcArrNo].dataStoreTable);
|
||||||
|
|
||||||
//Query SQL
|
//Query SQL
|
||||||
if (strlen(logSrcArr[logSrcArrNo].dataStoreTable) > 1
|
if (strlen(logSrcArr[logSrcArrNo].dataStoreTable) > 1
|
||||||
@@ -1061,22 +1099,20 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
tmpQuery[0] = 0;
|
tmpQuery[0] = 0;
|
||||||
sprintf(tmpQuery, "REPLACE %s SET %s",
|
sprintf(tmpQuery, "REPLACE %s SET %s",
|
||||||
logSrcArr[logSrcArrNo].dataStoreTable, tmpValue);
|
logSrcArr[logSrcArrNo].dataStoreTable, tmpValue);
|
||||||
|
|
||||||
|
omcLog(logFp, "Replace log into %s\n",tmpQuery);
|
||||||
omcLog(logFp, "Replace log into %s",logSrcArr[logSrcArrNo].dataStoreTable);
|
omcLog(logFp, "Replace log into %s",logSrcArr[logSrcArrNo].dataStoreTable);
|
||||||
result=mysql_getnores(dbConn, tmpQuery);
|
result=mysql_getnores(dbConn, tmpQuery);
|
||||||
|
|
||||||
errorNo = mysql_errno(dbConn);
|
errorNo = mysql_errno(dbConn);
|
||||||
if (errorNo > 0)
|
if (errorNo > 0)
|
||||||
{
|
{
|
||||||
omcLog(logFp, "\n Error number:%d", mysql_errno(dbConn));
|
|
||||||
omcLog(logFp, "\n Description: %s", mysql_error(dbConn));
|
|
||||||
if(errorNo == 2006)
|
if(errorNo == 2006)
|
||||||
{
|
{
|
||||||
mysql_close(dbConn);
|
mysql_close(dbConn);
|
||||||
omcLog(logFp, "Mysql has gone away");
|
|
||||||
dbConn = mysql_conn(HOSTNAME, PUB_DB);
|
dbConn = mysql_conn(HOSTNAME, PUB_DB);
|
||||||
if (dbConn == NULL) {
|
|
||||||
omcLog(logFp, " Fail to reconnect");
|
|
||||||
}
|
|
||||||
result=0;
|
result=0;
|
||||||
result=mysql_getnores(dbConn, tmpQuery);
|
result=mysql_getnores(dbConn, tmpQuery);
|
||||||
if(result == -1)
|
if(result == -1)
|
||||||
@@ -1098,5 +1134,6 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
|
|||||||
} //end of for(i = 0; i < pdu->var_num; i++)
|
} //end of for(i = 0; i < pdu->var_num; i++)
|
||||||
|
|
||||||
return (1);
|
return (1);
|
||||||
} //end of function
|
} //end of function
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user