int StartUpServer(unsigned int ServerPort) { int sockfd = MakeSocket(ServerPort); int nfds = sockfd + 1; int newsockfd; struct sockaddr_in addr; socklen_t size = sizeof(addr); fd_set master; fd_set readfds; fprintf(stdout, "Listening on port %d.\n\n", ServerPort); FD_ZERO(&master); FD_SET(sockfd, &master); while(1) { readfds = master; /*Monitor sockets*/ if(select(nfds, &readfds, NULL, NULL, NULL) < 0) { fprintf(stderr, "error: Fail to select\n"); exit(1); } /*Get a socket*/ if (FD_ISSET(sockfd, &readfds)) { newsockfd = accept(sockfd, (struct sockaddr *) &addr, &size); if(newsockfd < 0) { fprintf(stderr, "error: Fail to get newsockfd\n"); exit(1); } FD_SET(newsockfd, &master); } } return 0; }
BOOL TRAFFIC_MONITOR(char *server, int port, char *community, int ifindex, int timeout, int retrydelay, CString strMonitorID, char *custpath, char *szReturn) { int s; struct sockaddr_in serv; int i = 0, ret = 0; int count = 1; struct snval *ptmp = NULL; struct snval *ptmpnext = NULL; long ifOperStatus = 0; Gauge ifSpeed = 0; Counter ifInOctets = 0, ifOutOctets = 0; Counter ifInErrors = 0, ifOutErrors = 0; if((ret = MakeSocket(server, port, s, serv)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Traffic_1%>")); else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Traffic_2%>")); else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Traffic_3%>")); return FALSE; } struct oid *poid = NULL, *ptmpoid = NULL; oid ifInOctets_oid = {{0x2b, 6, 1, 2, 1, 2, 2, 1, 10}, 9}; oid ifOutOctets_oid = {{0x2b, 6, 1, 2, 1, 2, 2, 1, 16}, 9}; ifInOctets_oid.id[ifInOctets_oid.len++] = ifindex; poid = ptmpoid = &ifInOctets_oid; ifOutOctets_oid.id[ifOutOctets_oid.len++] = ifindex; ptmpoid->next = &ifOutOctets_oid; ptmpoid = ptmpoid->next; struct snval *psnval = NULL; if((ret = SN_VALUES(s, serv, community, 1, poid, &psnval)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_4%>"));//<%IDS_Dynamo_4%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_5%>"));//<%IDS_Dynamo_5%> else if(ret == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_6%>"));//<%IDS_Dynamo_6%> else if(ret == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_7%>"));//<%IDS_Dynamo_7%> else if(ret == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_8%>"));//<%IDS_Dynamo_8%> else if(ret == -6) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_9%>"));//<%IDS_Dynamo_9%> else if(ret == -7) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_10%>"));//<%IDS_Dynamo_10%> else if(ret == -8) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_11%>"));//<%IDS_Dynamo_11%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_12%>"));//<%IDS_Dynamo_12%> goto w; } ptmp = psnval; ptmpnext = NULL; while(ptmp) { switch(count) { case 1: switch(ptmp->sv_type) { case ASN1_INT: case ASN1_COUNTER: case ASN1_GAUGE: case ASN1_TIMETICKS: case ASN1_COUNTER64: case ASN1_UINTEGER32: ifInOctets = ptmp->sv_val.sv_int; break; default: ifInOctets = 0; break; } break; case 2: switch(ptmp->sv_type) { case ASN1_INT: case ASN1_COUNTER: case ASN1_GAUGE: case ASN1_TIMETICKS: case ASN1_COUNTER64: case ASN1_UINTEGER32: ifOutOctets = ptmp->sv_val.sv_int; break; default: ifOutOctets = 0; break; } break; } count ++; ptmp = ptmp->next; } // computer the traffic { char ciniFile[256] = {0}, cinifile[256] = {0}; char cifIndex[256] = {0}; sprintf(cinifile, "snmp_%s_%s.ini", server, strMonitorID); sprintf(ciniFile, "%s\\%s", custpath, cinifile); sprintf(cifIndex, "ifIndex_%ld", ifindex); long ifTime = 0; Counter inOctets = 0, outOctets = 0; CTime curTime = CTime::GetCurrentTime(); ifTime = DFN_GetPrivateProfileInt(cifIndex, "ifTime", -99, ciniFile); inOctets = DFN_GetPrivateProfileInt(cifIndex, "ifInOctets", -99, ciniFile); outOctets = DFN_GetPrivateProfileInt(cifIndex, "ifOutOctets", -99, ciniFile); if(ifTime == -99 || inOctets == -99 || outOctets == -99) { CString strSection = _T(""); strSection.Format("ifIndex_%ld", ifindex); curTime = CTime::GetCurrentTime(); CString strMsg = _T(""); strMsg.Format("%ld", curTime.GetTime()); ::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifTime", (LPCTSTR)strMsg, ciniFile); strMsg.Format("%ld", ifInOctets); ::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifInOctets", (LPCTSTR)strMsg, ciniFile); strMsg.Format("%ld", ifOutOctets); ::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifOutOctets", (LPCTSTR)strMsg, ciniFile); WriteLogFile(strMonitorID, "读配置文件失败"); } else { float ifInOctetsRate = 0.0, ifOutOctetsRate = 0.0; Counter InOctets = 0, OutOctets = 0; CTime bTime(ifTime); curTime = CTime::GetCurrentTime(); CTimeSpan spanTime = curTime - bTime; long lInterval = spanTime.GetTotalSeconds(); if(lInterval == 0) lInterval = 1; if(lInterval <= 12 * 60 * 60 && lInterval >= 0) { InOctets = (unsigned int)(ifInOctets - inOctets < 0 ? (COUNTER_MAX - inOctets + ifInOctets) : (ifInOctets - inOctets)); //ifInOctetsRate = (float)InOctets / lInterval; //k ifInOctetsRate = (float)InOctets / lInterval/1024; OutOctets = (unsigned int)(ifOutOctets - outOctets < 0 ? (COUNTER_MAX - outOctets + ifOutOctets) : (ifOutOctets - outOctets)); // wang peng /1024 =k //Edit By Kevin.Yang PM: 14:55 2004.10.21 //Reason: 根据张鹏所提供的资料目前Cisio的MIF库中单位为KB,因此在 //得到的数据后不再需要除以1024 ifOutOctetsRate = (float)OutOctets / lInterval /1024; //ifOutOctetsRate = (float)OutOctets / lInterval; sprintf(szReturn, "ifIndex=%ld$ifInOctetsRate=%.2f$ifOutOctetsRate=%.2f$", ifindex, ifInOctetsRate * 8, ifOutOctetsRate * 8); } else { CString strLog; strLog.Format("时间总秒数%d", lInterval); // WriteLogFile(strMonitorID, strLog); } // WriteLogFile(strMonitorID, szReturn); //if(strlen(szReturn) == 0) //{ // printf("%d年%d月%d日 %d时%d分%d秒 \n%d年%d月%d日 %d时%d分%d秒 \n", // curTime.GetYear(), curTime.GetMonth(), curTime.GetDay(), // curTime.GetHour(), curTime.GetMinute(), curTime.GetSecond(), // bTime.GetYear(), bTime.GetMonth(), bTime.GetDay(), // bTime.GetHour(), bTime.GetMinute(), bTime.GetSecond()); //} char buff[256] = {0}; memset(buff, 0, 256); ltoa(curTime.GetTime(), buff, 10); DFN_WritePrivateProfileString(cifIndex, "ifTime", buff, ciniFile); memset(buff, 0, 256); ltoa(ifInOctets, buff, 10); DFN_WritePrivateProfileString(cifIndex, "ifInOctets", buff, ciniFile); memset(buff, 0, 256); ltoa(ifOutOctets, buff, 10); DFN_WritePrivateProfileString(cifIndex, "ifOutOctets", buff, ciniFile); } } w: ptmp = psnval; if(ptmp) ptmpnext = ptmp->next; while(ptmp) { free(ptmp); ptmp = ptmpnext; if(ptmp) ptmpnext = ptmp->next; } return !ret; }
BOOL CTRONSSRCPU_MONITOR(char *server, int port, char *community, int rdelay, int timeout, char *cpath, char *szReturn) { int s; struct sockaddr_in serv; int ret = 0; BOOL bResult = TRUE; struct oid *poid = NULL, *proid = NULL; struct snval *psnval = NULL; *szReturn = 0; if((ret = MakeSocket(server, port, s, serv)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_1%>"));//<%IDS_CheckPoint_1%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_2%>"));//<%IDS_CheckPoint_2%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_3%>"));//<%IDS_CheckPoint_3%> return FALSE; } poid = (struct oid *)malloc(sizeof(struct oid)); proid = (struct oid *)malloc(sizeof(struct oid)); psnval = (struct snval *)malloc(sizeof(struct snval)); if(poid == NULL || proid == NULL || psnval == NULL) { bResult = FALSE; sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CTRON_01%>")); // 内存溢出错误 goto err; } memset(poid, 0, sizeof(struct oid)); memset(proid, 0, sizeof(struct oid)); memset(psnval, 0, sizeof(struct snval)); memcpy(poid, &capCPUTable, sizeof(struct oid)); while(SN_NEXT_VALUE(s, serv, community, 1, poid, proid, psnval) == 0) { if(compare_oid(*proid, capCPUCurrentUtilization) || psnval->sv_type != ASN1_INT || psnval->sv_val.sv_int > 100 || psnval->sv_val.sv_int < 0) { break; } sprintf(szReturn, "%sUtilization=%d$", szReturn, psnval->sv_val.sv_int); memcpy(poid, proid, sizeof(struct oid)); memset(proid, 0, sizeof(struct oid)); memset(psnval, 0, sizeof(struct snval)); } if(!*szReturn) { bResult = FALSE; sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CTRON_02%>")); // 设备无此性能参数 } err: if(poid) { free(poid); poid = NULL; } if(proid) { free(proid); proid = NULL; } if(psnval) { free(psnval); psnval = NULL; } return bResult; }
BOOL CTRONETHERSTATUS_MONITOR(char *server, int port, char *community, CString strIndex, int rdelay, int timeout, int ngid, int nmid, char *cpath, char *szReturn) { int s; struct sockaddr_in serv; int i = 0, j = 0, ret = 0; int count = 1; struct snval *ptmp = NULL; struct snval *ptmpnext = NULL; u_int _64Octets = 0, _65to127Octets = 0; u_int _Curr64Octets = 0, _Curr65to127Octets = 0; if((ret = MakeSocket(server, port, s, serv)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_1%>"));//<%IDS_CheckPoint_1%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_2%>"));//<%IDS_CheckPoint_2%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_3%>"));//<%IDS_CheckPoint_3%> return FALSE; } long index_id[32]; int index_id_c = 0; while(1) { i = strIndex.Find('.', 0); if(i > 0) index_id[index_id_c++] = atoi(strIndex); else if(i < 0 && strIndex.GetLength() > 0) { index_id[index_id_c++] = atoi(strIndex); break; } else break; strIndex.Delete(0, i + 1); } for(i = 0;i < index_id_c;i ++) { etherStatsPkts64Octets.id[etherStatsPkts64Octets.len++] = index_id[i]; etherStatsPkts65to127Octets.id[etherStatsPkts65to127Octets.len ++] = index_id[i]; } struct oid *poid = NULL, *ptmpoid = NULL; poid = ptmpoid = ðerStatsPkts64Octets; ptmpoid->next = ðerStatsPkts65to127Octets; ptmpoid = ptmpoid->next; struct snval *psnval = NULL; if((ret = SN_VALUES(s, serv, community, 1, poid, &psnval)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_4%>"));//<%IDS_CheckPoint_4%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_5%>"));//<%IDS_CheckPoint_5%> else if(ret == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_6%>"));//<%IDS_CheckPoint_6%> else if(ret == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_7%>"));//<%IDS_CheckPoint_7%> else if(ret == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_8%>"));//<%IDS_CheckPoint_8%> else if(ret == -6) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_9%>"));//<%IDS_CheckPoint_9%> else if(ret == -7) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_10%>"));//<%IDS_CheckPoint_10%> else if(ret == -8) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_11%>"));//<%IDS_CheckPoint_11%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_12%>"));//<%IDS_CheckPoint_12%> goto w; } _Curr64Octets = psnval->sv_val.sv_int; _Curr65to127Octets = psnval->next->sv_val.sv_int; { char ciniFile[256] = {0}, cinifile[256] = {0}; char cifIndex[256] = {0}; sprintf(cinifile, "ctron_%s_%d_%d.ini", server, ngid, nmid); sprintf(ciniFile, "%s\\%s", cpath, cinifile); sprintf(cifIndex, "ifIndex_%s", strIndex); long ifTime = 0; CTime curTime = CTime::GetCurrentTime(); ifTime = DFN_GetPrivateProfileInt(cifIndex, "ifTime", 0, ciniFile); _64Octets = DFN_GetPrivateProfileInt(cifIndex, "_64Octets", 0, ciniFile); _65to127Octets = DFN_GetPrivateProfileInt(cifIndex, "_65to127Octets", 0, ciniFile); if(ifTime == 0 && _64Octets == 0 && _65to127Octets == 0) { CString strSection = _T(""); strSection.Format("ifIndex_%s", strIndex); CString strMsg = _T(""); strMsg.Format("%ld", curTime.GetTime()); ::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifTime", (LPCTSTR)strMsg, ciniFile); strMsg.Format("%ld", _Curr64Octets); ::DFN_WritePrivateProfileString((LPCTSTR)strSection, "_64Octets", (LPCTSTR)strMsg, ciniFile); strMsg.Format("%ld", _Curr65to127Octets); ::DFN_WritePrivateProfileString((LPCTSTR)strSection, "_65to127Octets", (LPCTSTR)strMsg, ciniFile); } else { float _Rate64Octets = 0.0, _Rate65to127Octets = 0.0; Counter _Delta64Octets = 0, _Delta65to127Octets = 0; CTime bTime(ifTime); CTimeSpan spanTime = curTime - bTime; long lInterval = spanTime.GetTotalSeconds(); if(lInterval == 0) lInterval = 1; if(lInterval <= 12 * 60 * 60 && lInterval > 0) { _Delta64Octets = (unsigned int)(_Curr64Octets - _64Octets < 0 ? (COUNTER_MAX - _64Octets + _Curr64Octets) : (_Curr64Octets - _64Octets)); _Rate64Octets = (float)_Delta64Octets / lInterval; _Delta65to127Octets = (unsigned int)(_Curr65to127Octets - _65to127Octets < 0 ? (COUNTER_MAX - _65to127Octets + _Curr65to127Octets) : (_Curr65to127Octets - _65to127Octets)); _Rate65to127Octets = (float)_Delta65to127Octets / lInterval; sprintf(szReturn, "_Rate64Octets=%.2f$_Rate65to127Octets=%.2f$", _Rate64Octets, _Rate65to127Octets); } char buff[256] = {0}; memset(buff, 0, 256); ltoa(curTime.GetTime(), buff, 10); DFN_WritePrivateProfileString(cifIndex, "ifTime", buff, ciniFile); memset(buff, 0, 256); ltoa(_Curr64Octets, buff, 10); DFN_WritePrivateProfileString(cifIndex, "_64Octets", buff, ciniFile); memset(buff, 0, 256); ltoa(_Curr65to127Octets, buff, 10); DFN_WritePrivateProfileString(cifIndex, "_65to127Octets", buff, ciniFile); } } w: ptmp = psnval; if(ptmp) ptmpnext = ptmp->next; while(ptmp) { free(ptmp); ptmp = ptmpnext; if(ptmp) ptmpnext = ptmp->next; } return !ret; }
BOOL CtronEtherIndexs(char *server, int port, char *community, int rdelay, int timeout, char *cpath, CString &strBuffer) { int s; struct sockaddr_in serv; int nEther = 0; int nEthers[256] = {0}; struct oid nEtherDs[256]; int nIfIndex[256] = {0}; char IfDescr[256][64] = {0}; BOOL bResult = TRUE; int i = 0; struct oid *poid = NULL, *proid = NULL; struct snval *psnval = NULL; strBuffer = _T(""); if(MakeSocket(server, port, s, serv) < 0) { return FALSE; } poid = (struct oid *)malloc(sizeof(struct oid)); proid = (struct oid *)malloc(sizeof(struct oid)); psnval = (struct snval *)malloc(sizeof(struct snval)); if(poid == NULL || proid == NULL || psnval == NULL) { bResult = FALSE; goto err; } memcpy(poid, ðerStatsTable, sizeof(struct oid)); memset(proid, 0, sizeof(struct oid)); memset(psnval, 0, sizeof(struct snval)); // Get Rmon Index while(SN_NEXT_VALUE(s, serv, community, 1, poid, proid, psnval) == 0) { if(compare_oid(*proid, etherStatsIndex) || psnval->sv_type != ASN1_INT) { break; } nEthers[nEther ++] = psnval->sv_val.sv_int; if(nEther >= 256) { break; } memcpy(poid, proid, sizeof(struct oid)); memset(proid, 0, sizeof(struct oid)); memset(psnval, 0, sizeof(struct snval)); } if(nEther == 0) { bResult = FALSE; goto err; } // Get Rmon Data Source for(i = 0;i < nEther;i ++) { struct oid ds = etherStatsDataSource; ds.id[ds.len ++] = nEthers[i]; memset(psnval, 0, sizeof(struct snval)); if(SN_VALUE(s, serv, community, 1, &ds, psnval) < 0) { bResult = FALSE; goto err; } if(psnval->sv_type != ASN1_OBJID) { bResult = FALSE; goto err; } nEtherDs[i] = psnval->sv_val.sv_oid; } // Get Interface Index for(i = 0;i < nEther;i ++) { memset(psnval, 0, sizeof(struct snval)); if(SN_VALUE(s, serv, community, 1, &nEtherDs[i], psnval) < 0) { bResult = FALSE; goto err; } if(psnval->sv_type != ASN1_INT) { bResult = FALSE; goto err; } nIfIndex[i] = psnval->sv_val.sv_int; } // Get Interface Description for(i = 0;i < nEther;i ++) { struct oid descr = ifDescr; descr.id[descr.len ++] = nIfIndex[i]; memset(psnval, 0, sizeof(struct snval)); if(SN_VALUE(s, serv, community, 1, &descr, psnval) < 0) { bResult = FALSE; goto err; } if(psnval->sv_type != ASN1_OCTSTR) { bResult = FALSE; goto err; } strncpy(IfDescr[i], psnval->sv_val.sv_str.sv_str, psnval->sv_val.sv_str.sv_len); } // Organize Output for(i = 0;i < nEther;i ++) { char szBuffer[1024] = {0}; sprintf(szBuffer, "%s%d###%s###$$$", szBuffer, nEthers[i], IfDescr[i]); strBuffer += szBuffer; } err: if(poid) { free(poid); poid = NULL; } if(proid) { free(proid); proid = NULL; } if(psnval) { free(psnval); psnval = NULL; } return bResult; }
BOOL SNMP_MONITOR(char *server, int port, char *object, char *community, int timeout, int retrydelay, char *match, char *custpath, char *szReturn) { int s, ret = 0; struct sockaddr_in serv; if((ret = MakeSocket(server, port, s, serv)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_1%>")); // <%IDS_SNMP_1%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_2%>")); // <%IDS_SNMP_2%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_3%>")); // <%IDS_SNMP_3%> return FALSE; } struct oid *oidp = VerifyObject(object); if(!oidp) { sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_4%>")); // <%IDS_SNMP_4%> return FALSE; } struct snval snval; if((ret = SN_VALUE(s, serv, community, 1, oidp, &snval)) < 0) { if(ret == -1) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_5%>")); // <%IDS_SNMP_5%> else if(ret == -2) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_6%>")); // <%IDS_SNMP_6%> else if(ret == -3) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_7%>")); // <%IDS_SNMP_7%> else if(ret == -4) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_8%>")); // <%IDS_SNMP_8%> else if(ret == -5) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_9%>")); // <%IDS_SNMP_9%> else if(ret == -6) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_10%>")); // <%IDS_SNMP_10%> else if(ret == -7) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_11%>")); // <%IDS_SNMP_11%> else if(ret == -8) sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_12%>")); // <%IDS_SNMP_12%> else sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_13%>")); // <%IDS_SNMP_13%> if(oidp) free(oidp); return FALSE; } int i = 0; switch(snval.sv_type) { case ASN1_INT: switch(oidp->type) { case DFF1_IFTYPE: { char *iftype = NULL; iftype = snval.sv_val.sv_int == 1 ? "other" : snval.sv_val.sv_int == 2 ? "regular1822" : snval.sv_val.sv_int == 3 ? "hdh1822": snval.sv_val.sv_int == 4 ? "ddn-x25": snval.sv_val.sv_int == 5 ? "rfc877-x25": snval.sv_val.sv_int == 6 ? "ethernet-csmacd": snval.sv_val.sv_int == 7 ? "iso88023-csmacd": snval.sv_val.sv_int == 8 ? "iso88024-tokenBus": snval.sv_val.sv_int == 9 ? "iso88025-tokenRing": snval.sv_val.sv_int == 10 ? "iso88026-man": snval.sv_val.sv_int == 11? "starLan": snval.sv_val.sv_int == 12 ? "proteon-10Mbit": snval.sv_val.sv_int == 13 ? "proteon-80Mbit": snval.sv_val.sv_int == 14 ? "hyperchannel": snval.sv_val.sv_int == 15 ? "fddi": snval.sv_val.sv_int == 16 ? "lapb": snval.sv_val.sv_int == 17 ? "sdlc": snval.sv_val.sv_int == 18 ? "ds1": snval.sv_val.sv_int == 19 ? "e1": snval.sv_val.sv_int == 20 ? "basicISDN": snval.sv_val.sv_int == 21 ? "primaryISDN": snval.sv_val.sv_int == 22 ? "propPointToPointSerial": snval.sv_val.sv_int == 23 ? "ppp": snval.sv_val.sv_int == 24 ? "softwareLoopback": snval.sv_val.sv_int == 25 ? "eon": snval.sv_val.sv_int == 26 ? "ethernet-3Mbit": snval.sv_val.sv_int == 27 ? "nsip": snval.sv_val.sv_int == 28 ? "slip": snval.sv_val.sv_int == 29 ? "ultra": snval.sv_val.sv_int == 30 ? "ds3": snval.sv_val.sv_int == 31 ? "sip": snval.sv_val.sv_int == 32 ? "frame-relay": "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, iftype, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_ADMINSTATUS: { char *adminstatus = NULL; adminstatus = snval.sv_val.sv_int == 1 ? "up" : snval.sv_val.sv_int == 2 ? "down" : snval.sv_val.sv_int == 3 ? "testing" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, adminstatus, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_OPERSTATUS: { char *operstatus = NULL; operstatus = snval.sv_val.sv_int == 1 ? "up" : snval.sv_val.sv_int == 2 ? "down" : snval.sv_val.sv_int == 3 ? "testing" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, operstatus, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_IPFORWARDING: { char *forward = NULL; forward = snval.sv_val.sv_int == 1 ? "forwarding" : snval.sv_val.sv_int == 2 ? "not-forwarding" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, forward, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_IPROUTETYPE: { char *routetype = NULL; routetype = snval.sv_val.sv_int == 1 ? "other" : snval.sv_val.sv_int == 2 ? "invalid" : snval.sv_val.sv_int == 3 ? "direct" : snval.sv_val.sv_int == 4 ? "indirect" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, routetype, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_IPROUTEPROTO: { char *routeproto = NULL; routeproto = snval.sv_val.sv_int == 1 ? "other" : snval.sv_val.sv_int == 2 ? "local" : snval.sv_val.sv_int == 3 ? "netmgmt" : snval.sv_val.sv_int == 4 ? "icmp" : snval.sv_val.sv_int == 5 ? "egp" : snval.sv_val.sv_int == 6 ? "ggp" : snval.sv_val.sv_int == 7 ? "hello" : snval.sv_val.sv_int == 8 ? "rip" : snval.sv_val.sv_int == 9 ? "is-is" : snval.sv_val.sv_int == 10 ? "es-is" : snval.sv_val.sv_int == 11 ? "ciscoIgrp" : snval.sv_val.sv_int == 12 ? "bbnSpfIgp" : snval.sv_val.sv_int == 13 ? "ospf" : snval.sv_val.sv_int == 14 ? "bgp" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, routeproto, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_NETTOMEDIATYPE: { char *nettomediatype = NULL; nettomediatype = snval.sv_val.sv_int == 1 ? "other" : snval.sv_val.sv_int == 2 ? "invalid" : snval.sv_val.sv_int == 3 ? "dynamic" : snval.sv_val.sv_int == 4 ? "static" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, nettomediatype, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_TCPRTOALGORITH: { char *rtoalgorithm = NULL; rtoalgorithm = snval.sv_val.sv_int == 1 ? "other" : snval.sv_val.sv_int == 2 ? "constant" : snval.sv_val.sv_int == 3 ? "rsre" : snval.sv_val.sv_int == 4 ? "vanj" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, rtoalgorithm, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_TCPCONNSTATE: { char *connstate = NULL; connstate = snval.sv_val.sv_int == 1 ? "closed" : snval.sv_val.sv_int == 2 ? "listen" : snval.sv_val.sv_int == 3 ? "synSent" : snval.sv_val.sv_int == 4 ? "synReceived" : snval.sv_val.sv_int == 5 ? "established" : snval.sv_val.sv_int == 6 ? "finWait1" : snval.sv_val.sv_int == 7 ? "finWait2" : snval.sv_val.sv_int == 8 ? "closeWait" : snval.sv_val.sv_int == 9 ? "lastAck" : snval.sv_val.sv_int == 10 ? "closing" : snval.sv_val.sv_int == 11 ? "timeWait" : snval.sv_val.sv_int == 12 ? "deleteTCB" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, connstate, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_EGPNEIGHSTATE: { char *neighstate = NULL; neighstate = snval.sv_val.sv_int == 1 ? "idle" : snval.sv_val.sv_int == 2 ? "acquisition" : snval.sv_val.sv_int == 3 ? "down" : snval.sv_val.sv_int == 4 ? "up" : snval.sv_val.sv_int == 5 ? "cease" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, neighstate, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_EGPNEIGHMODE: { char *neighmode = NULL; neighmode = snval.sv_val.sv_int == 1 ? "avtive" : snval.sv_val.sv_int == 2 ? "passive" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, neighmode, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_EGPNEIGHEVENTT: { char *neigheventtrigger = NULL; neigheventtrigger = snval.sv_val.sv_int == 1 ? "start" : snval.sv_val.sv_int == 2 ? "stop" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, neigheventtrigger, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; case DFF1_SNMPENABLETRAP: { char *enableauthentraps = NULL; enableauthentraps = snval.sv_val.sv_int == 1 ? "enabled" : snval.sv_val.sv_int == 2 ? "disabled" : "unknown"; //sprintf(szReturn, "%s=%s###%ld$", oidp->name, enableauthentraps, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); } break; default: //sprintf(szReturn, "%s=%ld$", oidp->name, snval.sv_val.sv_int); sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int); break; } if(oidp) free(oidp); return TRUE; case ASN1_COUNTER: case ASN1_GAUGE: //sprintf(szReturn, "%s=%ld$", oidp->name, snval.sv_val.sv_int); sprintf(szReturn, "value=%u$", snval.sv_val.sv_int); if(oidp) free(oidp); return TRUE; case ASN1_TIMETICKS: { int days = 0, hours = 0, minutes = 0, secs = 0, psecs = 0; days = snval.sv_val.sv_int / (24 * 3600 * 100); hours = (snval.sv_val.sv_int % (24 * 3600 * 100)) / (3600 * 100); minutes = ((snval.sv_val.sv_int % (24 * 3600 * 100)) % (3600 * 100)) / (60 * 100); secs = (((snval.sv_val.sv_int % (24 * 3600 * 100)) % (3600 * 100)) % (60 * 100)) / 100; psecs = (((snval.sv_val.sv_int % (24 * 3600 * 100)) % (3600 * 100)) % (60 * 100)) % 100; //if(days) // sprintf(szReturn, "%s=%d days, %d:%d:%d.%d###%ld$", oidp->name, days, hours, minutes, secs, psecs, snval.sv_val.sv_int); //else // sprintf(szReturn, "%s=%d:%d:%d.%d###%ld$", oidp->name, hours, minutes, secs, psecs, snval.sv_val.sv_int); sprintf(szReturn, "value=%u$", snval.sv_val.sv_int); if(oidp) free(oidp); return TRUE; } case ASN1_OCTSTR: //if(!compare_oid(*oidp, interfaces_ifPhysAddress) || !compare_oid(*oidp, at_atPhysAddress)) if(oidp->type == DFF1_PHYSADDR && snval.sv_val.sv_str.sv_len == 6) //sprintf(szReturn, "%s=%x-%x-%x-%x-%x-%x$", oidp->name, // *snval.sv_val.sv_str.sv_str & 0xFF, // *(snval.sv_val.sv_str.sv_str + 1) & 0xFF, // *(snval.sv_val.sv_str.sv_str + 2) & 0xFF, // *(snval.sv_val.sv_str.sv_str + 3) & 0xFF, // *(snval.sv_val.sv_str.sv_str + 4) & 0xFF, // *(snval.sv_val.sv_str.sv_str + 5) & 0xFF); sprintf(szReturn, "value=%x-%x-%x-%x-%x-%x$", *snval.sv_val.sv_str.sv_str & 0xFF, *(snval.sv_val.sv_str.sv_str + 1) & 0xFF, *(snval.sv_val.sv_str.sv_str + 2) & 0xFF, *(snval.sv_val.sv_str.sv_str + 3) & 0xFF, *(snval.sv_val.sv_str.sv_str + 4) & 0xFF, *(snval.sv_val.sv_str.sv_str + 5) & 0xFF); else { //sprintf(szReturn, "%s=", oidp->name); //strncat(szReturn, snval.sv_val.sv_str.sv_str, snval.sv_val.sv_str.sv_len); //strncat(szReturn, "$", 1); sprintf(szReturn, "value=", oidp->name); strncat(szReturn, snval.sv_val.sv_str.sv_str, snval.sv_val.sv_str.sv_len); strncat(szReturn, "$", 1); } if(oidp) free(oidp); return TRUE; case ASN1_NULL: //sprintf(szReturn, "%s=%s$", oidp->name, ""); sprintf(szReturn, "value=%s$", ""); if(oidp) free(oidp); return TRUE; case ASN1_OBJID: //sprintf(szReturn, "%s=", oidp->name); sprintf(szReturn, "%s=", "value"); if(snval.sv_val.sv_oid.len <= 3) sprintf(szReturn, "%s$", szReturn); else while(i < snval.sv_val.sv_oid.len) { if(i == 0) sprintf(szReturn, "%s1.3.", szReturn); else if(i == snval.sv_val.sv_oid.len - 1) sprintf(szReturn, "%s%d$", szReturn, snval.sv_val.sv_oid.id[i]); else sprintf(szReturn, "%s%d.", szReturn, snval.sv_val.sv_oid.id[i]); i ++; } if(oidp) free(oidp); return TRUE; case ASN1_IPADDR: //sprintf(szReturn, "%s=%d.%d.%d.%d$", oidp->name, // (u_char)*snval.sv_val.sv_ipaddr, // (u_char)*(snval.sv_val.sv_ipaddr + 1), // (u_char)*(snval.sv_val.sv_ipaddr + 2), // (u_char)*(snval.sv_val.sv_ipaddr + 3)); sprintf(szReturn, "value=%d.%d.%d.%d$", (u_char)*snval.sv_val.sv_ipaddr, (u_char)*(snval.sv_val.sv_ipaddr + 1), (u_char)*(snval.sv_val.sv_ipaddr + 2), (u_char)*(snval.sv_val.sv_ipaddr + 3)); if(oidp) free(oidp); return TRUE; default: sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_14%>")); // <%IDS_SNMP_14%> if(oidp) free(oidp); return FALSE; } return TRUE; }