




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*Alarm.cpp*/
/*=================================================================
============*
*DESCRIPTION:receiveinformationandwritefile
*
*
*HISTORY:NAMEDATEREASON
*--------------
*WangXinXin11/14/2012Original
*
*SEEALSO:
*
*NOTES:g++Alarm.cpp-osnmp_test-lsnmp
*==================================================================
===========*/
#include"Alarm.h"
enum{
IP_POS=0,
AS_POS,
};
#ifndefMIN
#defineMIN(a,b)((a)<(b)?(a):(b))
#endif
#ifndefMAX
#defineMAX(a,b)((a)>(b)?(a):(b))
#endif
char*g_itemstr;
charg_IpBuf[50];
charlineBuf[MAX_LINE_ALARM_LEN];
Alarm*Alarm::_instance=NULL;
Alarm::Alarm(void)
{
//printf("brotherisgonnasendalarm!\n");
readNMSConfig();
}
Alarm*Alarm::instance()
{
if(_instance==NULL)
{
_instance=newAlarm();
}
return(_instance);
}
FILE*Alarm::openCfgfile(char*pFilename)
{
FILE*pFile=NULL;
if(!(pFile=fopen(pFilename,"r")))
{
strcpy(g_IpBuf,"
10
");
//printf(">>failtoopenfile>%s\n\n",pFilename);
g_itemstr=g_IpBuf;
returnNULL;
}
//printf(">>openfile>%s\n",pFilename);
returnpFile;
}
intAlarm::readLine(intline,ALARM_LINE_ITEMS*pLineItems)
{
inti,n;
intpos,offset;
char*pbuf=lineBuf;
for(i=0,n=0;i<MAX_LINE_ALARM_LEN;n++){
for(;i<MAX_LINE_ALARM_LEN;i++){
if(!isspace(pbuf[i]))break;
}
pos=i;
for(;i<MAX_LINE_ALARM_LEN;i++){
if(isspace(pbuf[i]))break;
}
offset=i-1;
if(offset<=pos)break;
memset(pLineItems[line].item[n].content,0,MAX_ITEM_ALARM_LEN);
memcpy(pLineItems[line].item[n].content,&pbuf[pos],
MIN((offset-pos+1),MAX_ITEM_ALARM_LEN));
//printf("Getline[%d]item[%d]:%s\n",line,n,
pLineItems[line].item[n].content);
}
returnn;
}
ALARM_LINE_ITEMS*Alarm::itemsptr()
{
staticALARM_LINE_ITEMS*pLineItems=NULL;
if(!pLineItems){
pLineItems=
(ALARM_LINE_ITEMS*)calloc(sizeof(ALARM_LINE_ITEMS),MAX_ALARM_LINE);
}
returnpLineItems;
}
intAlarm::readCfgItems(char*pfilename)
{
FILE*fp=NULL;
intline;
memset(lineBuf,'',MAX_LINE_ALARM_LEN);
ALARM_LINE_ITEMS*pItems=itemsptr();
if(NULL==(fp=openCfgfile(pfilename))){
return-1;
}
//fseek(fp,0,SEEK_SET);
line=0;
while(NULL!=fgets(lineBuf,MAX_LINE_ALARM_LEN,fp)){
//printf("readline%d:%s",line,lineBuf);
if(readLine(line,pItems)){
line++;
}
else{
//printf("thisisablankline,ignore\n");
}
memset(lineBuf,'',MAX_LINE_ALARM_LEN);
}
fclose(fp);
return(line>0?(line-1):0);
}
voidAlarm::readNMSConfig()
{
intret=0;
ALARM_LINE_ITEMS*pitems=itemsptr();
//printf("..readingNMSconfigfile\n");
ret=readCfgItems(NMS_CFG_FILE_PATH);
if(ret>=0)
{
g_itemstr=pitems[0].item[IP_POS].content;
}
}
voidAlarm::SendAlarm(AlarmInfo*Info)
{
charC16_AlarmTime[STR_LEN];
structtm*STim;
time_tSencTim;
oidobj1[]={1,3,6,1,4,1,28107,68,1,2,2,1,1};
oidobj2[]={1,3,6,1,4,1,28107,68,1,2,2,1,2};
oidobj3[]={1,3,6,1,4,1,28107,68,1,2,2,1,3};
oidobj4[]={1,3,6,1,4,1,28107,68,1,2,2,1,4};
oidobj5[]={1,3,6,1,4,1,28107,68,1,2,2,1,5};
oidobj6[]={1,3,6,1,4,1,28107,68,1,2,2,1,6};
oidobj7[]={1,3,6,1,4,1,28107,68,1,2,2,1,7};
oidobj8[]={1,3,6,1,4,1,28107,68,1,2,2,1,8};
oidobj9[]={1,3,6,1,4,1,28107,68,1,2,2,1,9};
oidobj10[]={1,3,6,1,4,1,28107,68,1,2,2,1,10};
oidobj11[]={1,3,6,1,4,1,28107,68,1,2,2,1,11};
oidobj12[]={1,3,6,1,4,1,28107,68,1,2,2,1,12};
oidobj13[]={1,3,6,1,4,1,28107,68,1,2,2,1,13};
oidobj14[]={1,3,6,1,4,1,28107,68,1,2,2,1,14};
oidobj15[]={1,3,6,1,4,1,28107,68,1,2,2,1,15};
oidobj16[]={1,3,6,1,4,1,28107,68,1,2,2,1,16};
oidobj17[]={1,3,6,1,4,1,28107,68,1,2,2,1,17};
oidobj18[]={1,3,6,1,4,1,28107,68,1,2,2,1,18};
oidobj19[]={1,3,6,1,4,1,28107,68,1,2,2,1,19};
oidobj20[]={1,3,6,1,4,1,28107,68,1,2,2,1,20};
charNone[]="0";
SencTim=time(NULL);
STim=localtime((consttime_t*)&SencTim);
strftime(C16_AlarmTime,STR_LEN,"%Y%m%d.%H%M%S",STim);
netsnmp_sessionsession,*ss;
netsnmp_pdu*pdu;
longsysuptime;
charcsysuptime[20];
char*trap;
charcommu[20];
intstatus;
//printf("ServerIp=%s\n",g_itemstr);
snmp_sess_init(&session);
session.version=SNMP_VERSION_2c;
session.peername=g_itemstr;
session.remote_port=SNMP_TRAP_PORT;
strcpy(commu,"public");
munity=(unsignedchar*)commu;
munity_len=strlen((char*)munity);
session.retries=3;
session.timeout=2000;
session.sessid=0;
netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
NETSNMP_DS_LIB_DEFAULT_PORT,SNMP_TRAP_PORT);
ss=snmp_open(&session);
if(ss==NULL)
{
snmp_sess_perror("snmptrap",&session);
}
pdu=snmp_pdu_create(SNMP_MSG_TRAP2);
sysuptime=get_uptime();
sprintf(csysuptime,"%ld",sysuptime);
trap=csysuptime;
//printf("C2_AlarmGroup=%s\n",Info->C2_AlarmGroup);
//printf("C3_AlarmType=%s\n",Info->C3_AlarmType);
//printf("C7_HostIp=%s\n",Info->C7_HostIp);
unsignedintHostIp=htonl(inet_addr(Info->C7_HostIp));
memset(Info->C7_HostIp,0,STR_LEN);
sprintf(Info->C7_HostIp,"%d",HostIp);
//printf("C7_HostIp=%s\n",Info->C7_HostIp);
//printf("C8_AlarmPortId=%s\n",Info->C8_AlarmPortId);
//printf("C13_AlarmLevel=%s\n",Info->C13_AlarmLevel);
//printf("C18_AlarmSwitch=%s\n",Info->C18_AlarmSwitch);
//printf("C20_AlarmContent=%s\n",Info->C20_AlarmContent);
snmp_add_var(pdu,obj1,OID_LENGTH(obj1),'i',None);
snmp_add_var(pdu,obj2,OID_LENGTH(obj2),'i',Info->C2_AlarmGroup);
snmp_add_var(pdu,obj3,OID_LENGTH(obj3),'i',Info->C3_AlarmType);
snmp_add_var(pdu,obj4,OID_LENGTH(obj4),'i',None);
snmp_add_var(pdu,obj5,OID_LENGTH(obj5),'i',None);
snmp_add_var(pdu,obj6,OID_LENGTH(obj6),'i',None);
snmp_add_var(pdu,obj7,OID_LENGTH(obj7),'i',Info->C7_HostIp);
snmp_add_var(pdu,obj8,OID_LENGTH(obj8),'i',Info-
>C8_AlarmPortId);
snmp_add_var(pdu,obj9,OID_LENGTH(obj9),'i',None);
snmp_add_var(pdu,obj10,OID_LENGTH(obj10),'i',None);
snmp_add_var(pdu,obj11,OID_LENGTH(obj11),'i',None);
snmp_add_var(pdu,obj12,OID_LENGTH(obj12),'i',None);
snmp_add_var(pdu,obj13,OID_LENGTH(obj13),'i',Info-
>C13_AlarmLevel);
snmp_add_var(pdu,obj14,OID_LENGTH(obj14),'i',None);
snmp_add_var(pdu,obj15,OID_LENGTH(obj15),'i',None);
snmp_add_var(pdu,obj16,OID_LENGTH(obj16),'s',C16_AlarmTime);
snmp_add_var(pdu,obj17,OID_LENGTH(obj17),'i',None);
snmp_add_var(pdu,obj18,OID_LENGTH(obj18),'i',Info-
>C18_AlarmSwitch);
snmp_add_var(pdu,obj19,OID_LENGTH(obj19),'i',None);
snmp_add_var(pdu,obj20,OID_LENGTH(obj20),'s',Info-
>C20_AlarmContent);
status=snmp_send(ss,pdu);
snmp_close(ss);
}
intmain()
{
Alarm*ptr=Alarm::instance();
AlarmInfoInfo;
strcpy(Info.C2_AlarmGroup,"133");
strcpy(Info.C3_AlarmType,"133701");
strcpy(Info.C7_HostIp,"
53
");
strcpy(Info.C8_AlarmPortId,"0");
strcpy(Info.C13_AlarmLevel,"1");
strcpy(Info.C18_AlarmSwitch,"1");
strcpy(Info.C20_AlarmContent,"DnarDead");
ptr->SendAlarm(&Info);
return0;
}
/*Alarm.h*/
/*=================================================================
============*
*DESCRIPTION:receiveinformationandwritefile
*
*
*HISTORY:NAMEDATEREASON
*--------------
*WangXinXin11/14/2012Original
*
*SEEALSO:
*
*NOTES:g++Alarm.cpp-osnmp_test-lsnmp
*==================================================================
===========*/
#ifndefALARM_H
#defineALARM_H
#include<net-snmp/net-snmp-config.h>
#include<net-snmp/net-snmp-includes.h>
#include<net-snmp/agent/agent_trap.h>
#include<netdb.h>
#include<net/if.h>
#include<sys/ioctl.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<stdio.h>
#include"ctype.h"
#defineSTR_LEN256
#defineMAX_LINE_ALARM_LEN512
#defineMAX_ITEM_ALARM_LEN32
#defineMAX_ONEL_ALARM_ITEM5
#defineMAX_ALARM_LINE5
#defineNMS_CFG_FILE_PATH"/opt/CTIR/etc/NMS.cfg"
typedefs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某公司营销管理制度
- 标识及追溯管理制度
- 档案及公章管理制度
- 检查与整改管理制度
- 检验用菌种管理制度
- 槟榔物流员管理制度
- 歌厅语音厅管理制度
- 母猪采食量管理制度
- 毛笔班学生管理制度
- 汉台区车辆管理制度
- 肺癌的护理查房 课件
- 高级护理实践知到智慧树章节测试课后答案2024年秋浙江中医药大学
- 【数学】现实中的变量教学设计 2024-2025学年北师大版数学七年级下册
- 高一语文暑假讲义-初高衔接06:阅读基本功句子含义的理解(教师版)
- 税收政策与社会公平分配问题探讨-洞察分析
- 2025届安徽省合肥市重点中学中考二模生物试题含解析
- 森林生态旅游与康养基础知识单选题100道及答案
- DB33T 2239-2020 经颅磁刺激戒毒康复应用管理规范
- 2025年陕西锌业有限公司招聘笔试参考题库含答案解析
- 露营地自然灾害应急预案
- 医疗损害责任民法典
评论
0/150
提交评论