C++之测试snmp的注册模块
来源:互联网 发布:ant windows 64位下载 编辑:程序博客网 时间:2024/06/06 02:47
## main.cpp
#include <iostream>#include <stdlib.h>#include <unistd.h>#include "dssx_helper.h"#include "typedef.h"#include "oidManager.h"RET_CODE GET_PARAM_STRING(UINT32 uiParamId, STRING paramVal){cout << __FUNCTION__ << endl;OidManager * pManager = OidManager::getInstance();pManager->getString(uiParamId,paramVal);cout << "\n" << endl;return RC_SUCCESS;}RET_CODE SET_PARAM_STRING(UINT32 uiParamId, STRING paramVal){cout << __FUNCTION__ << endl;OidManager * pManager = OidManager::getInstance();pManager->setString(uiParamId,paramVal);cout << "\n" << endl;return RC_SUCCESS;}RET_CODE GET_PARAM_UINT32(UINT32 uiParamId, UINT32 *uiParamVal){cout << __FUNCTION__ << endl;OidManager * pManager = OidManager::getInstance();pManager->getUint32(uiParamId,uiParamVal);cout << "\n" << endl;return RC_SUCCESS;}RET_CODE SET_PARAM_UINT32(UINT32 uiParamId, UINT32 uiParamVal){cout << __FUNCTION__ << endl;OidManager * pManager = OidManager::getInstance();pManager->setUint32(uiParamId,uiParamVal);cout << "\n" << endl;return RC_SUCCESS;}RET_CODE GET_PARAM_INT32(UINT32 uiParamId, INT32 *iParamVal){cout << __FUNCTION__ << endl;OidManager * pManager = OidManager::getInstance();pManager->getInt32(uiParamId,iParamVal);cout << "\n" << endl;return RC_SUCCESS;}RET_CODE SET_PARAM_INT32(UINT32 uiParamId, INT32 iParamVal){cout << __FUNCTION__ << endl;OidManager * pManager = OidManager::getInstance();pManager->setInt32(uiParamId,iParamVal);cout << "\n" << endl;return RC_SUCCESS;}int main(int argc,char **argv){if (argc < 2){cout << __FUNCTION__ << "::\t" << "Usage: ./command modulename" << endl;return 0;}string fname = string(argv[1]) + ".txt";OidManager::getInstance()->loadOidFile(fname.c_str()); DSSX_INIT(argv[1]); DSSX_REG_PARAM_STRING_CALLBACK(GET_PARAM_STRING,SET_PARAM_STRING);DSSX_REG_PARAM_UINT32_CALLBACK(GET_PARAM_UINT32,SET_PARAM_UINT32);DSSX_REG_PARAM_INT32_CALLBACK(GET_PARAM_INT32,SET_PARAM_INT32);while(1){sleep(1);}return 0;}
## oidManager.h
#ifndef OID_MANAGER_H#define OID_MANAGER_H#include <string>#include <vector>#include "typedef.h"using namespace std;class Node{public:Node(string _req,string _type,string _id,string _val,string _comment){req = _req;type = _type;id = _id;val = _val;comment = _comment;}string req;string type;string id;string val;string comment;};class OidManager{public:static OidManager * getInstance();bool loadOidFile(const string & fname);/*getString & setString*/bool getString(UINT32 paramId ,STRING val);bool setString(UINT32 paramId ,STRING val);/*getUin32 & setUint32*/bool getUint32(UINT32 paramId ,UINT32 *uiParamVal);bool setUint32(UINT32 paramId ,UINT32 uiParamVal);/*Int32*/bool getInt32(UINT32 paramId ,INT32 *iParamVal);bool setInt32(UINT32 paramId ,INT32 Val);private:OidManager(){m_isLoaded = false;m_nodeList.clear();}~OidManager(){}Node parseBuffeToNode(const char * buffer);private:bool m_isLoaded;vector<Node> m_nodeList;};#endif
## oidManager.cpp
#include "oidManager.h"#include <strstream>#include <iostream>#include <string>#include <stdio.h>#include <string.h>#include <iterator>using namespace std;string toString(int n){ strstream m; m<<n; string s; m>>s; return s;}int toINT(string str){ strstream m; m<<str; int n; m>>n; return n;}static OidManager * g_instance = NULL;/******************************************************************************/OidManager * OidManager::getInstance(){if (g_instance == NULL)g_instance = new OidManager();return g_instance;}/******************************************************************************/bool OidManager::loadOidFile(const string & fname){if (m_isLoaded){cout << __FUNCTION__ << "::\t" << "oid config file is loaded." << endl;return true;}FILE * fp = fopen(fname.c_str(),"r");if ( fp == NULL){cout << __FUNCTION__ << "::\t" << "fopen() failed ,please make sure " << fname << "exist" << endl;return false;}char buffer[100];while(true){memset(buffer,'\0',sizeof(buffer));char * ret = fgets(buffer, sizeof(buffer), fp);if (ret == NULL){cout << __FUNCTION__ << "::\t" << "fgets() read eof." << endl;break;}Node node = parseBuffeToNode(buffer);m_nodeList.push_back(node);}fclose(fp);}Node OidManager::parseBuffeToNode(const char * buffer){char req[10], type[10], id[10], val[20], comment[20];memset(req,'\0',10);memset(type,'\0',10);memset(id,'\0',10);memset(val,'\0',20);memset(comment,'\0',20);cout << buffer << endl;sscanf(buffer,"%s\t%s\t%s\t%s\t%s",req,type,id,val,comment);#ifdef DDEBUGcout << __FUNCTION__ << "::\t" << "Parsed Commont <" << req << ">" << endl;cout << __FUNCTION__ << "::\t" << "Parsed Commont <" << type << ">" << endl;cout << __FUNCTION__ << "::\t" << "Parsed Commont <" << id << ">" << endl;cout << __FUNCTION__ << "::\t" << "Parsed Commont <" << val << ">" << endl;cout << __FUNCTION__ << "::\t" << "Parsed Commont <" << comment << ">" << endl;#endifreturn Node(string(req),string(type),string(id),string(val),string(comment));}/******************************************************************************//*getString & setString*/bool OidManager::getString(UINT32 paramId ,STRING val){vector<Node>::iterator pIterator = m_nodeList.begin();for (pIterator; pIterator != m_nodeList.end(); pIterator++){if ( pIterator->req == "get" && pIterator->type == "string"){if ( toString(paramId) == pIterator->id){strcpy(val, pIterator->val.c_str());break;}}}if (pIterator == m_nodeList.end()){cout << __FUNCTION__ << "::\t" << "Cannot Find the Record with paramId " << paramId << endl;return false;}cout << __FUNCTION__ << "::\t" << "Find the Record (" << pIterator->comment << ")" << endl;return true;}bool OidManager::setString(UINT32 paramId ,STRING val){vector<Node>::iterator pIterator = m_nodeList.begin();for (pIterator; pIterator != m_nodeList.end(); pIterator++){if ( pIterator->req == "set" && pIterator->type == "string"){if ( toString(paramId) == pIterator->id){break;}}}if (pIterator == m_nodeList.end()){cout << __FUNCTION__ << "::\t" << "Cannot Find the Record with paramId " << paramId << endl;return false;}cout << __FUNCTION__ << "::\t" << "Find the Record " << pIterator->comment << ")" << endl;return true;}/******************************************************************************//*getUin32 & setUint32*/bool OidManager::getUint32(UINT32 paramId ,UINT32 *uiParamVal){vector<Node>::iterator pIterator = m_nodeList.begin();for (pIterator; pIterator != m_nodeList.end(); pIterator++){if ( pIterator->req == "get" && pIterator->type == "uint"){if ( toString(paramId) == pIterator->id){*uiParamVal = toINT(pIterator->val);break;}}}if (pIterator == m_nodeList.end()){cout << __FUNCTION__ << "::\t" << "Cannot Find the Record with paramId " << paramId << endl;return false;}cout << __FUNCTION__ << "::\t" << "Find the Record " << pIterator->comment << ")" << endl;return true;}bool OidManager::setUint32(UINT32 paramId ,UINT32 uiParamVal){vector<Node>::iterator pIterator = m_nodeList.begin();for (pIterator; pIterator != m_nodeList.end(); pIterator++){if ( pIterator->req == "set" && pIterator->type == "uint"){if ( toString(paramId) == pIterator->id){break;}}}if (pIterator == m_nodeList.end()){cout << __FUNCTION__ << "::\t" << "Cannot Find the Record with paramId " << paramId << endl;return false;}cout << __FUNCTION__ << "::\t" << "Find the Record " << pIterator->comment << ")" << endl;return true;}/******************************************************************************//*Int32*/bool OidManager::getInt32(UINT32 paramId ,INT32 *iParamVal){vector<Node>::iterator pIterator = m_nodeList.begin();for (pIterator; pIterator != m_nodeList.end(); pIterator++){if ( pIterator->req == "get" && pIterator->type == "int"){if ( toString(paramId) == pIterator->id){*iParamVal = toINT(pIterator->val);break;}}}if (pIterator == m_nodeList.end()){cout << __FUNCTION__ << "::\t" << "Cannot Find the Record with paramId " << paramId << endl;return false;}cout << __FUNCTION__ << "::\t" << "Find the Record " << pIterator->comment << ")" << endl;return true;}bool OidManager::setInt32(UINT32 paramId ,INT32 Val){vector<Node>::iterator pIterator = m_nodeList.begin();for (pIterator; pIterator != m_nodeList.end(); pIterator++){if ( pIterator->req == "set" && pIterator->type == "int"){if ( toString(paramId) == pIterator->id){break;}}}if (pIterator == m_nodeList.end()){cout << __FUNCTION__ << "::\t" << "Cannot Find the Record with paramId " << paramId << endl;return false;}cout << __FUNCTION__ << "::\t" << "Find the Record " << pIterator->comment << ")" << endl;return true;}/******************************************************************************/
## Makefile
TARGET=okINCLUDES=-I/home/zengzhe/avod/api/common -I/home/zengzhe/avod/api/emod_helperLIBS=-L/home/zengzhe/avod/lib/LOCAL -ldssx -lcommon -lpthreadSOURCES=main.cpp oidManager.cpp$(TARGET):g++ $(SOURCES) -o $(TARGET) $(INCLUDES) $(LIBS)clean:rm -rf $(TARGET) *.o *~
## server_suu.txt
getstring10getVersiongetVersiongetstring11queryUpdatequeryUpdategetstring12queryUpdateStatqueryUpdateStatgetstring13ConfirmUpdateConfirmUpdate
## 用法说明
./ok server_suu.txt
该模块是配合自定义snmpd一起进行使用的辅助模块,用于验证是否正确设置了snmpd的扩展oid的接口。
0 0
- C++之测试snmp的注册模块
- SNMP 的table 变量测试
- SNMP测试
- WinForm应用程序之注册模块的设计与实现
- 核心模块之主模块的测试常用指令
- 核心模块之主模块的非测试常用指令
- net-snmp代码分析之fd_event_manager.c
- net-snmp代码分析之fd_event_manager.c
- snmp trap编程之分析notification.c
- windows SNMP服务的安装、测试
- SNMP的Private Enterprise(OID)申请注册方法
- regsvr32注册模块c\program 加载失败
- Java做的注册模块
- linux 文件系统模块的注册
- 注册模块的错误解决
- 注册表单验证的模块
- Matlab测试C函数模块
- OpenCart之定制注册模块插件
- 51单片机DS1302实时时钟驱动程序
- 理解Python中的装饰器
- Android ADT与SDK的更新问题解决方法
- js效果
- 深入了解HelloAndroid下的三个文件
- C++之测试snmp的注册模块
- linux ssh自动登陆
- 文件操作
- PCL库尝试
- 小猪的Android入门之路 day 1
- SGU 495 Kids and Prizes [期望]
- c# 模拟表单提交,post form 上传文件、大数据内容
- 小猪的Android入门之路 Day 2
- 七步教你实现Django网站列表自动分页