alarm
This commit is contained in:
@@ -257,70 +257,179 @@ void localBeatRecv(BYTE oidLen, DWORD *oidArr, BYTE *pdata,WORD dataLen,snmp_add
|
||||
}
|
||||
}
|
||||
}*/
|
||||
//another omc
|
||||
if(psysconf->systypeno == 0)
|
||||
{
|
||||
if(oidArr[7] == 2 && oidArr[8] == 4 && oidArr[9] == 10)
|
||||
|
||||
//check oidlen
|
||||
// if(oidLen > oidArr[psysconf->prefixoidlen]+1)
|
||||
// {
|
||||
// //ems_debug(BEATPROC_DEBUG_LOGFILE,"The length of oid is big");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>澯 Trap (OID <20><> .8 <20><>β)
|
||||
if (oidArr[psysconf->prefixoidlen] == 8)
|
||||
{
|
||||
update_ems_process_state(oidArr,pdata);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Trap (OID <20><> .2 <20><>β)
|
||||
// <20><>ӡ pdata <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// char pdatastring[256] = {0};
|
||||
// char tmpstr[16];
|
||||
// for (int j = 0; j < dataLen; j++)
|
||||
// {
|
||||
// sprintf(tmpstr, "%02X ", pdata[j]);
|
||||
// strcat(pdatastring, tmpstr);
|
||||
// }
|
||||
// char oidstring[256] = {0};
|
||||
// oidtostr(oidArr, oidLen, oidstring);
|
||||
// ems_debug(BEATPROC_DEBUG_LOGFILE, "Received alarm trap OID: %s, data: %s", oidstring, pdatastring);
|
||||
|
||||
sysno=pdata[0];
|
||||
subsysno=pdata[1];
|
||||
if(sysno >= psysconf->maxsysnum || subsysno >= psysconf->maxsubsysnum)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE,"System %s sysno or subsysno is too big,[%d,%d] > [%d,%d]",psysconf->systypename,sysno,subsysno,psysconf->maxsysnum,psysconf->maxsubsysnum);
|
||||
return;
|
||||
}
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
{
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"pdata[39+%d]:%d",i,(int *)pdata[39+i]);
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"beatProcSequenceNum[%d]:%d",i,(int)beatProcSequenceNum[i]);
|
||||
|
||||
if(pdata[39+i] != beatProcSequenceNum[i])
|
||||
// <20><>ȡʱ<C8A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3-6 <20>ֽڣ<D6BD>
|
||||
unsigned long alarmTime = (pdata[2] << 24) | (pdata[3] << 16) | (pdata[4] << 8) | pdata[5];
|
||||
|
||||
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD> alarmId
|
||||
char alarmIdStr[32];
|
||||
sprintf(alarmIdStr, "%lu", alarmTime);
|
||||
|
||||
|
||||
|
||||
// ת<><D7AA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD>ʽ
|
||||
char alarmTimeStr[20]; // <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
time_t alarmTime_t = (time_t)alarmTime;
|
||||
strftime(alarmTimeStr, sizeof(alarmTimeStr), "%Y-%m-%d %H:%M:%S", localtime(&alarmTime_t));
|
||||
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||||
int clearMode = pdata[6]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int compCode = pdata[8]; // <20><><EFBFBD><EFBFBD> ID
|
||||
int alarmCode = pdata[9]; // <20>澯<EFBFBD><E6BEAF>
|
||||
|
||||
|
||||
// <20><>ȡ<EFBFBD>澯<EFBFBD><E6BEAF>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> 11 <20>ֽڿ<D6BD>ʼ<EFBFBD><CABC>
|
||||
char alarmInfo[256] = {0};
|
||||
memcpy(alarmInfo, &pdata[10], dataLen - 10); // ʣ<><CAA3><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD>澯<EFBFBD><E6BEAF>Ϣ
|
||||
|
||||
MYSQL *pubConn = mysql_conn("localhost","OMC_PUB");
|
||||
if (pubConn == NULL)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE, "Connect to OMC_PUB fail");
|
||||
return;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> SQL <20><><EFBFBD><EFBFBD>
|
||||
if (clearMode == 0)
|
||||
{
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>澯
|
||||
sprintf(beatproc_sqlstr,
|
||||
"UPDATE sysAlarmInfo SET clearTime=CURRENT_TIMESTAMP, clearMode=0, clearBy='System' "
|
||||
"WHERE sysTypeNo=%d AND sysNo=%d AND subSysNo=%d AND compCode=%d AND alarmCode=%d AND clearMode=1 AND alarmId='%s';",
|
||||
psysconf->systypeno, sysno, subsysno, compCode, alarmCode, alarmIdStr);
|
||||
|
||||
if (mysql_getnores(pubConn, beatproc_sqlstr) != 0)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE, "[SQL ERR], %s", beatproc_sqlstr);
|
||||
}
|
||||
else
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE, "Alarm cleared: %s", beatproc_sqlstr);
|
||||
}
|
||||
mysql_close(pubConn);
|
||||
return;
|
||||
}
|
||||
else if (clearMode == 1)
|
||||
{
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>澯
|
||||
sprintf(beatproc_sqlstr,
|
||||
"INSERT INTO sysAlarmInfo (sysTypeNo, sysNo, subSysNo, compCode, alarmCode, alarmTime, clearTime, clearMode, alarmId, alarmInfo) "
|
||||
"VALUES (%d, %d, %d, %d, %d, '%s', '0000-00-00 00:00:00', 1, '%s', '%s');",
|
||||
psysconf->systypeno, sysno, subsysno, compCode, alarmCode, alarmTimeStr, alarmIdStr, alarmInfo);
|
||||
|
||||
if (mysql_getnores(pubConn, beatproc_sqlstr) != 0)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE, "[SQL ERR], %s", beatproc_sqlstr);
|
||||
}
|
||||
else
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE, "New alarm inserted: %s", beatproc_sqlstr);
|
||||
}
|
||||
mysql_close(pubConn);
|
||||
return;
|
||||
}
|
||||
} //end if .8
|
||||
else{
|
||||
//another omc
|
||||
if(psysconf->systypeno == 0)
|
||||
{
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"beatProcSequenceNum:%s",Sequencstring);
|
||||
if(oidArr[7] == 2 && oidArr[8] == 4 && oidArr[9] == 10)
|
||||
{
|
||||
update_ems_process_state(oidArr,pdata);
|
||||
return;
|
||||
}
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
{
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"pdata[39+%d]:%d",i,(int *)pdata[39+i]);
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"beatProcSequenceNum[%d]:%d",i,(int)beatProcSequenceNum[i]);
|
||||
|
||||
if(pdata[39+i] != beatProcSequenceNum[i])
|
||||
{
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"beatProcSequenceNum:%s",Sequencstring);
|
||||
return;
|
||||
}
|
||||
}
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"EqHBProSequenceNum:%s",Sequencstring);
|
||||
|
||||
}
|
||||
//msc trap message for parameter
|
||||
else if(psysconf->systypeno == 320)
|
||||
{
|
||||
if(oidLen <= psysconf->prefixoidlen)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE,"MSC trap message oid is too short %d <= %d",oidLen,psysconf->prefixoidlen);
|
||||
return;
|
||||
}
|
||||
//parameter
|
||||
if(oidArr[psysconf->prefixoidlen] == 2)
|
||||
{
|
||||
update_msc_trap_msg(oidLen,oidArr,pdata,dataLen,addr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//check sysno and subsysno
|
||||
sysno=pdata[0];
|
||||
subsysno=pdata[1];
|
||||
if(sysno >= psysconf->maxsysnum || subsysno >= psysconf->maxsubsysnum)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE,"System %s sysno or subsysno is too big,[%d,%d] > [%d,%d]",psysconf->systypename,sysno,subsysno,psysconf->maxsysnum,psysconf->maxsubsysnum);
|
||||
return;
|
||||
}
|
||||
}
|
||||
//ems_debug(BEATPROC_DEBUG_LOGFILE,"EqHBProSequenceNum:%s",Sequencstring);
|
||||
|
||||
}
|
||||
//msc trap message for parameter
|
||||
else if(psysconf->systypeno == 320)
|
||||
{
|
||||
if(oidLen <= psysconf->prefixoidlen)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE,"MSC trap message oid is too short %d <= %d",oidLen,psysconf->prefixoidlen);
|
||||
return;
|
||||
}
|
||||
//parameter
|
||||
if(oidArr[psysconf->prefixoidlen] == 2)
|
||||
{
|
||||
update_msc_trap_msg(oidLen,oidArr,pdata,dataLen,addr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//check sysno and subsysno
|
||||
sysno=pdata[0];
|
||||
subsysno=pdata[1];
|
||||
if(sysno >= psysconf->maxsysnum || subsysno >= psysconf->maxsubsysnum)
|
||||
{
|
||||
ems_debug(BEATPROC_DEBUG_LOGFILE,"System %s sysno or subsysno is too big,[%d,%d] > [%d,%d]",psysconf->systypename,sysno,subsysno,psysconf->maxsysnum,psysconf->maxsubsysnum);
|
||||
return;
|
||||
}
|
||||
|
||||
if(psysconf->systems[sysno][subsysno].isalive == 0)
|
||||
{
|
||||
psysconf->systems[sysno][subsysno].isalive=1;
|
||||
//printf("%s-%d-%d-%d is alive\n",psysconf->systypename,index,sysno,subsysno);
|
||||
}
|
||||
|
||||
if(psysconf->isalive == 0)
|
||||
{
|
||||
psysconf->isalive=1;
|
||||
}
|
||||
|
||||
psysconf->systems[sysno][subsysno].lastupdatetime=time(NULL);
|
||||
|
||||
update_state(psysconf,sysno,subsysno,pdata,dataLen,addr);
|
||||
|
||||
if(psysconf->systems[sysno][subsysno].isalive == 0)
|
||||
{
|
||||
psysconf->systems[sysno][subsysno].isalive=1;
|
||||
//printf("%s-%d-%d-%d is alive\n",psysconf->systypename,index,sysno,subsysno);
|
||||
}
|
||||
|
||||
if(psysconf->isalive == 0)
|
||||
{
|
||||
psysconf->isalive=1;
|
||||
}
|
||||
|
||||
psysconf->systems[sysno][subsysno].lastupdatetime=time(NULL);
|
||||
|
||||
update_state(psysconf,sysno,subsysno,pdata,dataLen,addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user