Compare commits

..

26 Commits

Author SHA1 Message Date
AGT EMS
ea652d7254 feat: add smpp data coding schema smpp8dcs0Unpack7(19) 2025-06-19 17:31:39 +08:00
AGT EMS
f06f26c81b fix:... 2025-06-19 11:02:16 +08:00
AGT EMS
fbd48eb4ee fix: dos2unix some files 2025-06-19 10:48:08 +08:00
AGT EMS
6fee394db0 fix: opt install shell script 2025-06-18 16:14:09 +08:00
root
9ae7d50f73 add aas-config 2025-06-13 10:31:29 +08:00
root
c7523004bd new version-alarm lincense 2025-06-03 11:53:01 +08:00
root
5026cdb2b7 alarm 2025-05-09 18:56:04 +08:00
root
f744be8df8 ussd kpi and smlog cdr 2025-03-27 17:36:21 +08:00
lai
a74d97e221 增加ussd统计 2025-03-27 17:30:20 +08:00
lai
7f79b5abac 增加特殊情况 2025-03-07 17:49:16 +08:00
lai
b379a19aae 去除tapcvt 2025-02-27 11:26:16 +08:00
root
e9347a3ae0 smpp-c 2025-02-24 19:35:15 +08:00
root
cab9a32f96 tap-pre 2025-02-21 17:09:10 +08:00
root
48e5b94f1f tap-cdr.c 2025-01-22 21:53:19 +08:00
root
6d9e440ec8 add MSC-CDR 2025-01-03 18:35:27 +08:00
lai
8ef1414ea3 DEBUG 2024-12-18 18:27:55 +08:00
lai
a1c7b3d2dd DEBUG 2024-12-18 17:52:16 +08:00
lai
230812d6e1 SGSN特殊处理 2024-12-18 16:23:10 +08:00
lai
6e7d29edad 取消打印 2024-11-20 15:04:47 +08:00
48f0493d4e add:spgw kpi 2024-11-14 17:17:48 +08:00
2e658c5839 ... 2024-11-11 18:17:16 +08:00
236f1937a6 init git attributes 2024-11-11 18:12:33 +08:00
agtuser
530f9116ae init 2024-11-11 17:55:10 +08:00
91fb7cf944 ... 2024-10-22 10:28:41 +08:00
8dc85066da re-init mian branch 2024-10-22 10:26:32 +08:00
5e9fabfc23 re-init mian branch 2024-10-22 10:26:18 +08:00
21 changed files with 1782 additions and 1364 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto

1
.gitignore vendored
View File

@@ -24,6 +24,7 @@
*.bak*
*.exe
__debug_bin*.exe
*.swp
# bin file
bin/iptrans

View File

@@ -20,6 +20,7 @@ alarmAgent -d
nrtrde -d
sftpSend -d
cstaCollector -d
[slave_task]
iptrans -d
paraComm -d

11
bin/conf/tap.cfg Normal file
View File

@@ -0,0 +1,11 @@
[local]
name=NFK
prefix=CD
currency=USD
utc_offset=+1200
tap_path=/opt
[partners]
name=PLWPC
plmnid=46000
place=CHINA
currency=CNY

View File

@@ -75,9 +75,30 @@
"Description."
::= { msc 1 }
-- 1.3.6.1.4.1.1373.2.3.3.1.99
control OBJECT IDENTIFIER ::= { msc 99 }
-- 1.3.6.1.4.1.1373.2.3.3.1.99.2
neSystem OBJECT IDENTIFIER ::= { control 2 }
-- 1.3.6.1.4.1.1373.2.3.3.1.99.2.1
config OBJECT IDENTIFIER ::= { neSystem 1 }
-- 1.3.6.1.4.1.1373.2.3.3.1.99.2.1.2
licenseUpdate OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Description."
::= { config 2 }
-- 1.3.6.1.4.1.1373.1.3.3.2.2
-- 1.3.6.1.4.1.1373.2.3.3.1.2
parameter OBJECT IDENTIFIER ::= { msc 2 }

View File

@@ -71,6 +71,25 @@
"Description."
::= { pps 1 }
-- 1.3.6.1.4.1.1373.2.3.3.6.99
control OBJECT IDENTIFIER ::= { pps 99 }
-- 1.3.6.1.4.1.1373.2.3.3.6.99.2
neSystem OBJECT IDENTIFIER ::= { control 2 }
-- 1.3.6.1.4.1.1373.2.3.3.6.99.2.1
config OBJECT IDENTIFIER ::= { neSystem 1 }
-- 1.3.6.1.4.1.1373.2.3.3.6.99.2.1.2
licenseUpdate OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Description."
::= { config 2 }
-- 1.3.6.1.4.1.1373.1.3.3.2.2
-- 1.3.6.1.4.1.1373.2.3.3.6.2

View File

@@ -74,6 +74,26 @@
"Description."
::= { smsc 1 }
-- 1.3.6.1.4.1.1373.2.3.3.5.99
control OBJECT IDENTIFIER ::= { smsc 99 }
-- 1.3.6.1.4.1.1373.2.3.3.5.99.2
neSystem OBJECT IDENTIFIER ::= { control 2 }
-- 1.3.6.1.4.1.1373.2.3.3.5.99.2.1
config OBJECT IDENTIFIER ::= { neSystem 1 }
-- 1.3.6.1.4.1.1373.2.3.3.5.99.2.1.2
licenseUpdate OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Description."
::= { config 2 }
-- 1.3.6.1.4.1.1373.1.3.3.2.2
-- 1.3.6.1.4.1.1373.2.3.3.5.2
@@ -432,7 +452,8 @@
smpp8dcs0def7(2),
smpp7def8(16),
smpp8dcs4def8(17),
smpp8dcs0def8(18)
smpp8dcs0def8(18),
smpp8dcs0Unpack7(19)
}
MAX-ACCESS read-write
STATUS current
@@ -528,8 +549,15 @@
::= { sMPPEntry 10 }
-- 1.3.6.1.4.1.1373.2.3.3.5.2.3.1.1.11
smppRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Key Parameter:Yes"
::= { sMPPEntry 11 }
-- 1.3.6.1.4.1.1373.2.3.3.5.2.3.1.1.12
smppRoleType OBJECT-TYPE
SYNTAX INTEGER
{
@@ -541,29 +569,8 @@
DESCRIPTION
"Key Parameter:Yes Name:Role Type
Remark:Specify the role type of local SMPP entity"
::= { sMPPEntry 11 }
-- 1.3.6.1.4.1.1373.2.3.3.5.2.3.1.1.12
smppRerouteInd OBJECT-TYPE
SYNTAX INTEGER
{
disable(0),
enable(1)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Key Parameter:Yes Name:Reroute Indication
Remark:Specify the reroute indication of local SMPP entity"
::= { sMPPEntry 12 }
-- 1.3.6.1.4.1.1373.2.3.3.5.2.3.1.1.13
smppRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Key Parameter:Yes"
::= { sMPPEntry 13 }
END

View File

@@ -184,7 +184,9 @@ case "$runMode" in
hostName='single'
#my.conf
if [ -f /etc/my.cnf ] ; then
mv -f /etc/my.cnf /etc/my.cnf_bak
fi
cp -f ../config/mariadb-50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf
chmod 644 /etc/mysql/mariadb.conf.d/50-server.cnf
echo "set configuration file: /etc/mysql/mariadb.conf.d/50-server.cnf ok!"

BIN
bin/tapcvt Normal file

Binary file not shown.

View File

@@ -44,8 +44,6 @@
## TEST_OBJ_PATH = [module object files Path for test ] => just for test
##---------------------------------------------------------------------##
MODULE = 8ecp
TYPE = plat

View File

@@ -82,6 +82,8 @@ BYTE str2oid(char *str, DWORD * array, BYTE max);
char *bcd2str(BYTE* buf,int len);
int smsDecodeAll(int code_type,char* strIn,char* strOut,int length);
char* digits2str(BYTE* buf,int len);
char* askm2str(BYTE* buf,int len);
void test()
{
@@ -767,6 +769,9 @@ void create_record_table(cdr_src *psrc,MYSQL *pCdrConn)
sprintf(tmpstr,"TEXT");
strcat(createfieldlist,tmpstr);
break;
case 42: // 假设这是一个字符串类型的字段
strcat(createfieldlist, "VARCHAR(30)"); // 或者根据需要调整长度
break;
//integer
case 1:
//unsigned integer
@@ -1442,9 +1447,22 @@ void cdr_parse(cdr_sys *psys,int tagcode,ASN_BUF *asnbuf,int fieldIndex,char* fi
case 4:
if((len = get_tlv(pdef->fields[fieldIndex].tags[tagcode],tempbyte,asnbuf)) > 0)
{
//opps need cc
if(psrc->sysTypeNo == 375)
if (psrc->sysTypeNo == 375) {
sprintf(fieldstr, ",'%s'", digits2str(tempbyte, len * 2));
} else if ((psrc->sysTypeNo == 320 && !strcmp(pdef->fields[fieldIndex].tags[tagcode], "7.12")) ||
(psrc->sysTypeNo == 351 &&
(!strcmp(pdef->fields[fieldIndex].tags[tagcode], "0.1") ||
!strcmp(pdef->fields[fieldIndex].tags[tagcode], "0.2")))) {
if (tempbyte[0] == 0x91 || tempbyte[0] == 0x81 || tempbyte[0] == 0xa1) {
sprintf(fieldstr, ",'%s'", digits2str(tempbyte + 1, (len - 1) * 2));
} else {
// 阿斯克码值
sprintf(fieldstr, ",'%s'", askm2str(tempbyte, len * 2));
}
}
else
sprintf(fieldstr,",'%s'",digits2str(tempbyte + 1,(len - 1) * 2));
}
@@ -1714,7 +1732,16 @@ void cdr_parse(cdr_sys *psys,int tagcode,ASN_BUF *asnbuf,int fieldIndex,char* fi
sprintf(fieldstr,",NULL");
}
break;
case 42:
if((len = get_tlv(pdef->fields[fieldIndex].tags[tagcode], tempbyte, asnbuf)) > 0)
{
sprintf(fieldstr, ",'%d.%d.%d.%d'", tempbyte[0], tempbyte[1], tempbyte[2], tempbyte[3]);
}
else
{
sprintf(fieldstr, ",NULL");
}
break;
}
}
@@ -1952,6 +1979,22 @@ char* digits2str(BYTE* buf,int len)
return dig;
}
char* askm2str(BYTE* buf, int len) {
static char str[512];
int i;
for (i = 0; i < 512; i++) {
str[i] = '\0';
}
for (i = 0; i < len; i++) {
str[i] = buf[i];
}
str[len] = '\0';
return str;
}
// Extra function
int sendHeartbeat()
{

View File

@@ -1265,7 +1265,11 @@ void clear_table(char *table_name)
cdr_log("[ERR %d][clear_table]:Can not connect to CDR_DB",mysql_errno(pubConn));
return;
}
sprintf(mng_sqlstr,"delete from CDR_DB.%s WHERE TO_DAYS(releaseTime)<TO_DAYS(NOW());",table_name);
if(mysql_getnores(pubConn,mng_sqlstr) != 0)
cdr_log("[ERR %d][clear_table]:%s",mysql_errno(pubConn),mng_sqlstr);
else

View File

@@ -788,6 +788,8 @@ int sendFile(char *remoteip, char *username, char *userpass, char *srcdir, char
//Use the expect script to send the file by sftp
sprintf(command,"expect sendfile %s %s %s %s %s %s 1>/tmp/result%d.txt 2>/dev/null",remoteip,username,userpass,srcdir,filename,desdir,fileIndex);
sprintf(message,"command %s \n",command);
logMessage(message);
system(command);
//Use the parseResult script to parse the result of sending file
@@ -801,6 +803,9 @@ int sendFile(char *remoteip, char *username, char *userpass, char *srcdir, char
sprintf(command,"rm -rf /tmp/result%d.txt",fileIndex);
system(command);
sprintf(message,"SendFile()---The result is %d\n",res);
logMessage(message);
//printf("SendFile()---The result is %d\n",res);
if(res==0)
@@ -841,6 +846,8 @@ int sendFile(char *remoteip, char *username, char *userpass, char *srcdir, char
}
//printf("%s\n",message);
sprintf(command,"rm -rf /tmp/temp%d.txt",fileIndex);
sprintf(message,"rm command %s \n",command);
logMessage(message);
system(command);
return res;

View File

@@ -112,7 +112,7 @@ int checkPlatHasSubSysNo(int sysTypeNo,int sysNo)
{
// modified by simon at 2024/04/12
//if(sysNo != 9)
if (sysNo != 9 && sysNo != 3 && sysNo != 5 && sysNo != 6 ) // 9-MSS,3-HLR,5-OCS/PPS,6-SMSC
if (sysNo != 9 && sysNo != 3 && sysNo != 5 && sysNo != 6 && sysNo != 11) // 9-MSS,3-HLR,5-OCS/PPS,6-SMSC 11-AAS
{
switch(sysTypeNo)
{

View File

@@ -10,6 +10,8 @@ BYTE parseoid(char *str, DWORD * array, BYTE max);
char *oidtostr(DWORD* oid,int oidlen,char *output);
static char beatproc_sqlstr[8192];
static char beatprocInfo_sqlstr[8192];
static char state_str[MAX_MSG_LEN];
static _sys_conf sys_conf[MAX_SYS_CONF];
static int sys_conf_count=0;
@@ -257,6 +259,133 @@ void localBeatRecv(BYTE oidLen, DWORD *oidArr, BYTE *pdata,WORD dataLen,snmp_add
}
}
}*/
//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)
{
//<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;
}
// <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;
}
else if(clearMode == 2)
{//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
sprintf(beatproc_sqlstr,
"INSERT INTO sysAlarmEvent (sysTypeNo, sysNo, subSysNo, compCode, alarmCode, alarmTime, clearTime, clearMode, alarmId, alarmInfo) "
"VALUES (%d, %d, %d, %d, %d, '%s', '0000-00-00 00:00:00', 2, '%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, "Event alarm inserted: %s", beatproc_sqlstr);
}
mysql_close(pubConn);
return;
}
} //end if .8
else{
//another omc
if(psysconf->systypeno == 0)
{
@@ -322,6 +451,7 @@ void localBeatRecv(BYTE oidLen, DWORD *oidArr, BYTE *pdata,WORD dataLen,snmp_add
update_state(psysconf,sysno,subsysno,pdata,dataLen,addr);
}
}
void update_state(_sys_conf *psysconf,int sysNo,int subSysNo,BYTE *pdata,int dataLen,snmp_addr *addr)
@@ -414,6 +544,17 @@ void update_state(_sys_conf *psysconf,int sysNo,int subSysNo,BYTE *pdata,int dat
{
ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr);
}
sprintf(beatproc_sqlstr,"update OMC_PUB.sysAlarmInfo set clearTime=CURRENT_TIMESTAMP,clearMode=0,clearBy='System' where sysTypeNo=%d and sysNo=%d and subSysNo=%d and compCode=0 and alarmCode=254;",
psysconf->systypeno,sysNo,subSysNo);
if(mysql_getnores(pubConn,beatproc_sqlstr) != 0)
{
ems_debug(BEATPROC_DEBUG_LOGFILE,"[SQL ERR],%s",beatproc_sqlstr);
}
else
{
ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr);
}
}
mysql_close(pubConn);
@@ -587,6 +728,39 @@ void update_alarm(_sys_conf *psysconf,int sysno,int subsysno,int compcode,int al
{
ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr);
}
// <20><><EFBFBD><EFBFBD> alarmCode Ϊ 254 ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD>뵽 alarmInfo <20><>
if (alarmcode == 254)
{
sprintf(beatproc_sqlstr,"update OMC_PUB.sysAlarmInfo set clearTime=CURRENT_TIMESTAMP,clearMode=0,clearBy='System' where sysTypeNo=%d and sysNo=%d and subSysNo=%d and compCode=0 and alarmCode=254;",
psysconf->systypeno,sysno,subsysno);
if(mysql_getnores(pubConn,beatproc_sqlstr) != 0)
{
ems_debug(BEATPROC_DEBUG_LOGFILE,"[SQL ERR],%s",beatproc_sqlstr);
}
else
{
ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr);
}
time_t current_time = time(NULL);
char alarmIdStr[32];
sprintf(alarmIdStr, "%ld", (long)current_time); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
sprintf(beatproc_sqlstr, "insert into OMC_PUB.sysAlarmInfo(sysTypeNo,sysNo,subSysNo,compCode,alarmCode,alarmTime,clearTime,clearMode,alarmInfo,alarmId) "
"values(%d,%d,%d,%d,%d,CURRENT_TIMESTAMP,'0000-00-00 00:00:00',1,'Can not receive heartbeat','%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, "Inserted into alarmInfo: %s", beatproc_sqlstr);
}
}
}
psys->lastcompcode=compcode;

View File

@@ -12,6 +12,8 @@ int getOmcSysNo(int* sysNo);
int getOmcStatus(int sysNo);
int omcSysNo=-1;
static char cstaproc_sqlstr[8192];
/*
return:
TIMETO_NONE
@@ -1009,7 +1011,9 @@ int csta_send(csta_src *pcsta,csta_sys *psys)
break;
case 2:
if(pcsta->sysTypeNo != 350){
csta_pdu.var[0].oid[b_oidlen++]=psys->id1;
}
if(pcsta->sysTypeNo==320 || pcsta->sysTypeNo==378|| pcsta->sysTypeNo==387)
{
//Entry OID
@@ -1225,6 +1229,7 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
sprintf(tmpstr3," and %s=%d",pobj->id1_field,psys->pre_id1 + pobj->id1_offset);
strcat(sumCondition,tmpstr3);
}
break;
case 2:
sprintf(key_field,"%s,%s,",pobj->id1_field, pobj->id2_field);
@@ -1234,6 +1239,7 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
sprintf(tmpstr3," and %s=%d and %s=%d",pobj->id1_field,psys->pre_id1 + pobj->id1_offset,pobj->id2_field,psys->pre_id2 + pobj->id2_offset);
strcat(sumCondition,tmpstr3);
}
break;
}
//csta_log("single_message_flag:%d",pcsta->single_message_flag);
@@ -1248,6 +1254,7 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
sprintf(tmpstr3," and UNIX_TIMESTAMP(csta_datetime) = %ld",d_timestamp);
strcat(sumCondition,tmpstr3);
sprintf(sumsqlstr,"select %s from %s.%sData where %s",pobj->sql_sum,CSTA_DB,pobj->detail_table,sumCondition);
}
if(pobj->field_width == 2)
@@ -1260,6 +1267,8 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
}
}
else
{
if (pcsta->sysTypeNo != 362)
{
for(i=0;i<pobj->detail_field_count;i++)
{
@@ -1267,6 +1276,37 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
sprintf(tmpstr3,"%u,",htonl(*pval4));
strcat(sqlstr,tmpstr3);
}
}else{ //SPGW
for(i=0;i<pobj->detail_field_count-2;i++)
{
pval4=(DWORD*)(pvar->msg + 4 + i * 4);
sprintf(tmpstr3,"%u,",htonl(*pval4));
strcat(sqlstr,tmpstr3);
// printf("Field %d: %u\n", i + 1, htonl(*pval4));
} //ǰʮ<C7B0><CAAE><EFBFBD><EFBFBD>
DWORD *uplink_tmp1, *uplink_tmp2;
DWORD *downlink_tmp1, *downlink_tmp2;
uint64_t uplink_total_volume;
uint64_t downlink_total_volume;
// <20><><EFBFBD><EFBFBD> uplink_total_volume
uplink_tmp1 = (DWORD*)(pvar->msg + 4 + (pobj->detail_field_count - 2) * 4); //68
uplink_tmp2 = (DWORD*)(pvar->msg + 4 + (pobj->detail_field_count -1) * 4); // 72
uplink_total_volume = ((uint64_t)ntohl(*uplink_tmp1) << 32) +ntohl(*uplink_tmp2);
sprintf(tmpstr3, "%llu,", uplink_total_volume);
strcat(sqlstr, tmpstr3);
// <20><><EFBFBD><EFBFBD> downlink_total_volume
downlink_tmp1 = (DWORD*)(pvar->msg + 4 + (pobj->detail_field_count ) * 4); //76<37><36>ʼ
downlink_tmp2 = (DWORD*)(pvar->msg + 4 + (pobj->detail_field_count +1) * 4); //80<38><30>ʼ
downlink_total_volume = ((uint64_t)ntohl(*downlink_tmp1) << 32) +ntohl(*downlink_tmp2);
sprintf(tmpstr3, "%llu,", downlink_total_volume);
strcat(sqlstr, tmpstr3);
}
}
sprintf(tmpstr3,"FROM_UNIXTIME(%ld))",d_timestamp);
strcat(sqlstr,tmpstr3);
@@ -1359,6 +1399,9 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
sprintf(sqlstr, "replace into %s.%sData (%s%s%scsta_datetime)VALUES(%s%s",
CSTA_DB,pobj->sum_table,sys_field,key_field,sumFieldList,sys_value,key_value);
for(i=0;i<pobj->sum_field_count;i++)
{
if(row[i] == NULL)
@@ -1378,6 +1421,55 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu)
sprintf(tmpstr3,"FROM_UNIXTIME(%ld))",d_timestamp);
strcat(sqlstr,tmpstr3);
//only 320 mscSumData.check Signal Error
if (pcsta->sysTypeNo == 320 && strcmp(pobj->sum_table, "mscSumData") == 0) {
int sysNo = psys->sysid; // <20><> psys <20><>ȡ sysNo
int subSysNo = psys->subsysid;
unsigned int SignalErr = 0, Attempt = 0 ,KeyType =0;
sscanf(sqlstr, "%*[^,],%*[^,],%u,%*[^,],%u,%*[^,],%u", &KeyType,&Attempt, &SignalErr);
// MO-12 MT-13
if (Attempt > 0 && (KeyType == 12 || KeyType == 13)) {
double ratio = (double)SignalErr / Attempt;
// <20><><EFBFBD><EFBFBD> SignalErr / Attempt > 5%<25><><EFBFBD>򴥷<EFBFBD><F2B4A5B7>
if (ratio > 5.0) {
time_t current_time = time(NULL);
char alarmIdStr[32];
sprintf(alarmIdStr, "%ld", (long)current_time); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> alarmInfo <20><><EFBFBD><EFBFBD> SQL <20><><EFBFBD><EFBFBD>
sprintf(cstaproc_sqlstr, "insert into OMC_PUB.sysAlarmInfo(sysTypeNo,sysNo,subSysNo,compCode,alarmCode,alarmTime,clearTime,clearMode,alarmInfo,alarmId) "
"values(%d,%d,%d,%d,%d,CURRENT_TIMESTAMP,'0000-00-00 00:00:00',1,'Call failure rate exceeds 5%%');",
pcsta->sysTypeNo,sysNo,subSysNo, 0, 10, alarmIdStr);
// ִ<><D6B4> SQL <20><><EFBFBD><EFBFBD>
if (mysql_getnores(pubConn, cstaproc_sqlstr) != 0) {
csta_log("[SQL ERR]: %s", cstaproc_sqlstr);
} else {
csta_log("Inserted into alarmInfo: %s", cstaproc_sqlstr);
}
}else{
//clear 5% alarm
sprintf(cstaproc_sqlstr, "update OMC_PUB.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;",
pcsta->sysTypeNo, sysNo, subSysNo, 0, 10);
// ִ<><D6B4> SQL <20><><EFBFBD><EFBFBD>
if (mysql_getnores(pubConn, cstaproc_sqlstr) != 0) {
csta_log("[SQL ERR]: %s", cstaproc_sqlstr);
} else {
csta_log("Cleared alarmInfo: %s", cstaproc_sqlstr);
}
}
} else {
csta_log("Attempt is zero, skipping SignalErr/Attempt calculation.");
}
}
if(mysql_getnores(pCstaConn,sqlstr) != 0)
{
if(mysql_errno(pCstaConn) == 1146)

View File

@@ -109,7 +109,6 @@ int sendHeartbeat()
memset(proc_name,0,16);
sprintf(proc_name,"logCollector");
//pdu
memset(&pdu,0,sizeof(snmp_pdu));
pdu.pdu_type=7;
@@ -314,6 +313,7 @@ int logColl_initLogSrcArr()
*/
int logColl_initAttrDefnArr()
{
char confQuery[400] = "\0";
MYSQL_RES *confResult = NULL;
MYSQL_ROW confRow;
@@ -325,14 +325,13 @@ int logColl_initAttrDefnArr()
"level_6,level_7,level_8,level_9,level_10";
//init if first
for (i = 0; i < MaxAttrDefnNum; i++) {
attrDefnArr[arrayNo].sysTypeNo = 0;
attrDefnArr[arrayNo].fieldObjIdStr[0] = 0;
attrDefnArr[arrayNo].fieldName[0] = 0;
attrDefnArr[arrayNo].valueType = 0;
attrDefnArr[arrayNo].valueLen = 0;
attrDefnArr[i].sysTypeNo = 0;
attrDefnArr[i].fieldObjIdStr[0] = 0;
attrDefnArr[i].fieldName[0] = 0;
attrDefnArr[i].valueType = 0;
attrDefnArr[i].valueLen = 0;
//attrDefnArr[arrayNo].initValue;
}
//load subscriber data into array one bye one sysTypeNo
for (logSrcArrNo = 0; logSrcArrNo < MaxLogSrcNum; logSrcArrNo++) {
//if (logSrcArr[logSrcArrNo].isEnable <= 0) {
@@ -346,6 +345,7 @@ int logColl_initAttrDefnArr()
levelSelect, logSrcArr[logSrcArrNo].sysTypeNo,
logSrcArr[logSrcArrNo].dataTypeNo, queryOrderBy);
confResult = (MYSQL_RES *) mysql_getres(dbConn, confQuery);
if (confResult == NULL) {
omcLog(logFp, " Database may be stopped,Please check!");
return (0);
@@ -380,6 +380,7 @@ int logColl_initAttrDefnArr()
}
mysql_free_result(confResult);
}
return (1);
}
@@ -391,6 +392,7 @@ int logColl_initAttrDefnArr()
*/
int logColl_getIp(int logSrcArrNo, char *dstIP)
{
MYSQL_RES *tmpResult;
MYSQL_ROW tmpRow;
char tmpQuery[400] = "\0";
@@ -419,6 +421,7 @@ int logColl_getIp(int logSrcArrNo, char *dstIP)
logSrcArr[logSrcArrNo].sysTypeNo,
logSrcArr[logSrcArrNo].sysNo,
logSrcArr[logSrcArrNo].subSysNo);
mysql_free_result(tmpResult); // 正确释放结果集
return (0);
}
}
@@ -432,11 +435,15 @@ int logColl_getIp(int logSrcArrNo, char *dstIP)
*/
int logColl_mainProc()
{
int i = 0;
int idleLogSrcCount = 0;
snmp_pdu tmpPdu;
//var_list tmpVarArr[MaxVarNum];
snmp_addr tmpAddr;
// init
memset(&tmpPdu, 0, sizeof(snmp_pdu));
memset(&tmpAddr, 0, sizeof(snmp_addr));
#if logColl_DEBUG
//system("clear");
@@ -471,7 +478,7 @@ int logColl_mainProc()
{
//not receive message or received invaild message
//write log
/*
#if logColl_DEBUG
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,
@@ -481,7 +488,7 @@ int logColl_mainProc()
logSrcArr[i].sleepCount,logSrcArr[i].sleepTime,
logSrcArr[i].desc);
#endif
*/
continue;
}
}
@@ -628,6 +635,7 @@ int logColl_mainProc()
*/
int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
{
if (logColl_mkAddr(logSrcArrNo, addr) < 1) {
return (0);
}
@@ -635,11 +643,15 @@ int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
return (0);
}
if (snmp_send(pdu, addr) > 0) {
sprintf(logSrcArr[logSrcArrNo].desc, "send snmp message ok!");
omcLog(logFp, "Send request snmp package wait for response, %s",logSrcArr[logSrcArrNo].dataStoreTable);
logSrcArr[logSrcArrNo].msgState = nWaitResponse;
return (1);
} else {
// printf("failed to send snmp msg,remote ip=%x,remote port=%d",
// addr->remote_ip, addr->remote_port);
//write log
omcLog(logFp,
"failed to send snmp msg,remote ip=%x,remote port=%d",
@@ -661,11 +673,15 @@ int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
*/
int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
{
int i = *logSrcArrNo;
int respProcReturn = 0;
int j;
memset(pdu, 0, sizeof(snmp_pdu));
logColl_mkAddr(i, addr);
if (snmp_receive(pdu, addr) > 0) {
//received msg ok
respProcReturn = logColl_procResp(logSrcArrNo, pdu); //here maybe changed *logSrcArrNo's value
i = *logSrcArrNo;
@@ -698,7 +714,7 @@ int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
}
} else {
//not received msg
//printf("error:table:%s,systypeNo:%d\n",logSrcArr[i].dataStoreTable,logSrcArr[i].sysTypeNo);
sprintf(logSrcArr[i].desc, "Receive snmp message failed!");
logSrcArr[i].waitTimeCount++;
@@ -726,6 +742,7 @@ int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
*/
int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
{
if (logColl_mkVarArr(logSrcArrNo, pdu->var) < 1) {
return (0);
}
@@ -747,6 +764,8 @@ int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
*/
int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
{
if (strlen(logSrcArr[logSrcArrNo].dstIP) <= 0) {
omcLog(logFp, "Initing snmp_addr error: Cannot get ip");
logSrcArr[logSrcArrNo].logState = nWaitLog;
@@ -768,6 +787,7 @@ int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
*/
int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
{
var_list *unitVar;
int i, varCount = 0;
int totalMsgLen = 0;
@@ -835,9 +855,11 @@ int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
*/
int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
{
int i, j, logSrcArrNo, tlvCount;
char tmpQuery[3500] = "\0";
char tmpValue[3000] = "\0";
char tmpQuery[5000] = "\0";
char tmpValue[5000] = "\0";
int tlvLen = 0;
int tlvIntValue = 0;
char tlvAscValue[512] = "\0";
@@ -854,7 +876,7 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
logSrcArrNo = *oldlogSrcArrNo;
#if logColl_DEBUG
// omcLog(logFp," ----- Processing logSrcArr[%d]'s response message ",logSrcArrNo);
omcLog(logFp," ----- Processing logSrcArr[%d]'s response message ",logSrcArrNo);
#endif
//check pdu_type
if (pdu->pdu_type != nResp) {
@@ -884,6 +906,7 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
}
}
for (i = 0; i < pdu->var_num; i++) {
int errStr;
@@ -980,6 +1003,8 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
return (-1);
}
} else { /*get data and update to database */
//printf("\nstart replace:logColl_procResp1 ");
char tmpUnitValue[1024] = "\0";
char tmpSetStr[1024] = "\0";
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,
&asnBuffer);
//printf("\nstart replace:logColl_procResp2 ");
//get value form asnbuffer and make SQL string
for (tlvCount = attrDefnBgn; tlvCount < attrDefnEnd;
tlvCount++) {
@@ -1033,11 +1060,14 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
}
break;
default:
// printf("\nstart replace:logColl_procResp3 ");
sprintf(logSrcArr[logSrcArrNo].desc,
" Invailed vartype(attrDefnArr[%d].valueType=%d)",
tlvCount, attrDefnArr[tlvCount].valueType);
return (-1);
}
if (tlvLen >= 0) {
if (varCount == 0) {
strcat(tmpValue, tmpSetStr);
@@ -1046,12 +1076,20 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
strcat(tmpValue, tmpSetStr);
}
varCount++;
omcLog(logFp, "tmpSetStr: %s\n", tmpSetStr);
omcLog(logFp, "tmpValue: %s\n", tmpValue);
// printf("tmpSetStr: %s\n", tmpSetStr);
// printf("tmpValue: %s\n", tmpValue);
} else {
omcLog(logFp, " can not get tlvTag[%s]'s tlvValue",
attrDefnArr[tlvCount].fieldObjIdStr);
return (0);
//return (0);
}
} //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
if (strlen(logSrcArr[logSrcArrNo].dataStoreTable) > 1
@@ -1061,22 +1099,20 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
tmpQuery[0] = 0;
sprintf(tmpQuery, "REPLACE %s SET %s",
logSrcArr[logSrcArrNo].dataStoreTable, tmpValue);
omcLog(logFp, "Replace log into %s\n",tmpQuery);
omcLog(logFp, "Replace log into %s",logSrcArr[logSrcArrNo].dataStoreTable);
result=mysql_getnores(dbConn, tmpQuery);
errorNo = mysql_errno(dbConn);
if (errorNo > 0)
{
omcLog(logFp, "\n Error number:%d", mysql_errno(dbConn));
omcLog(logFp, "\n Description: %s", mysql_error(dbConn));
if(errorNo == 2006)
{
mysql_close(dbConn);
omcLog(logFp, "Mysql has gone away");
dbConn = mysql_conn(HOSTNAME, PUB_DB);
if (dbConn == NULL) {
omcLog(logFp, " Fail to reconnect");
}
result=0;
result=mysql_getnores(dbConn, tmpQuery);
if(result == -1)
@@ -1100,3 +1136,4 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
return (1);
} //end of function

View File

@@ -20,7 +20,7 @@
#endif
#define MaxLogSrcNum 16 //max number of command can be execute as same time
#define MaxAttrDefnNum 256
#define MaxAttrDefnNum 512
#define MaxOidLen 20 //max number of object ID
#define MaxSubOidLen 10 //max number of sub object ID
#define MaxVarNum 50 //max number of var in one pdu