SNMP移植文档.docx
- 文档编号:2238261
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:17
- 大小:44.78KB
SNMP移植文档.docx
《SNMP移植文档.docx》由会员分享,可在线阅读,更多相关《SNMP移植文档.docx(17页珍藏版)》请在冰豆网上搜索。
SNMP移植文档
SNMP移植文档说明
目录
SNMP移植文档说明1
0.文档读者说明3
1netSnmp源代码说明3
1.1netSnmp源代码的来源和版本号3
1.2netSnmp在arm9上跑起来3
1.2.1配置netSnmp3
1.2.2编译netSnmp3
1.3MIB配置4
2.我们的应用4
2.1移植4
2.2相关文件4
2.2.1Makefile文件4
2.2.2其他文件修改记录5
2.3snmp的配置文件5
3.Makefile和工具链的使用6
3.1生成并修改完善一个我们需要Makefile6
3.1.1首先去xl2005/app/DoPatrol下找到Makefile文件,了解系统api是如何编译出来一个DoPatrol的。
6
3.1.2然后将xl2005/app/DoPatrol/Makefile头部的索引代码copy到agent/Makefile6
3.1.3最后我们需要xl2005/inc的头文件放到net-snmp-5.2.1/include下8
3.1编译我们的代码用到的工具链:
8
3.2.1工具链下载地址8
3.2.2工具链信息8
3.2.3工具链部署8
3.3其他8
4.MIB库文件到代码的实现8
4.1我们的功能在MIB库上的呈现8
4.2MIB库到标准版本的代码9
4.2.1用MIB2C的方式9
4.2.2自己编写的方式9
4.2.3注意10
4.3将我们的API放入其中10
5.SNMP中的trap和自动发现11
5.1设备的自动发现11
5.1.1GT3000的自动发现的目的:
11
5.1.2GT3000自动发现过程:
11
5.1.3GT3000数据包定义11
5.1.4备注:
11
5.2snmp中的trap实现12
6.附表13
6.1附表一13
6.2附表二15
6.2.1Trap函数接口定义说明15
6.2.2Trap信息对应的办卡类型15
6.3附表三17
1.文档读者说明
此文档的读者必须对SNMP有所了解,知道snmp协议的通信机制,了解snmp协议框架的基本元素。
另外一些网上可以轻易查到的SNMP调试文档我就不在这里引用了。
1netSnmp源代码说明
1.1netSnmp源代码的来源和版本号
netSnmp是开源的代码,我现在用的版本是5.2.1.可以在-snmp.org/download.html下载到需要的版本。
我们下载到的net-snmp-5.2.1.tar.gz,放到linux下用tar指令解压缩,我们就可以看到一个展开的net-snmp-5.2.1的文件夹了。
1.2netSnmp在arm9上跑起来
1.2.1配置netSnmp
使用configure文件配置netSnmp之后,Makefile才能正常的编译netSnmp。
进入linux的终端,进入到net-snmp-5.2.1目录下,输入下面信息:
CC=arm-linux-gcc./configure--build=i386-linux--host=arm-linux--enable-mini-agent--disable-ipv6--with-endianness=little--disable-manuals--disable-ucd-snmp-compatibility--enable-as-needed--disable-embedded-perl--without-perl-modules--disable-snmptrapd-subagent--disable-applications--disable-scripts
后按Enter。
(--without-perl-modules在5.2.1中没有disable只要设置了就会添加perl脚本,所以如果没有安装perl脚本识别环境的都会开启perl模式。
可以去掉)
在配置的的过程中,需要填写几个值:
snmp的版本信息:
选择2,管理员个人信息:
waye12345678,公司MIB位置信息:
Gtel,以及log位置(这个可以缺省,我们可以不关注)。
最后结束了,配置完成,如果中间出现错误,就需要看看那个配置出问题了。
1.2.2编译netSnmp
直接make会调用arm-linux-gcc(工具链的安装和使用在3.2中详细描述)编译之后,可以在net-snmp-5.2.1/agent/下找到snmpd程序,就可以直接放到设备上运行了。
还有一个snmp.conf的配置文件需要添加,在2.3中详细说明
1.3MIB配置
MIB库在snmp中的应用也是通过configure来完成的。
在1.2.1中的黑体的配置信息最后可以添加--with-mib-modules="路径/MIB模块名字",就可以将需要添加到netSnmp中自己定义的MIB库添加完毕了。
(路径是指在net-snmp-5.2.1/agent/mibgroup/路径,MIB模块名字是指路径下MIB模块名字.c文件的文件名字,不包含.c部分。
)
举一个例子:
Gtel是路径,atm4Table就是MIB模块的名字,可以直接用MIB2C生成。
在提交的代码中,net-snmp-5.2.1/agent/mibgroup/Gtel/atm4Table.cpp,
生成的代码是.c结尾的,为了添加支持cpp的api,改成cpp编译。
注意:
在运行1.2.1中黑体配置信息的时候一定要保证路径下的文件名是*.c的后缀,否则配置会无效的。
如何将MIB库导入makefile,在4.2中会有详细描述
2.我们的应用
2.1移植
我们的api是用C++写的,所以需要将arm-linux-gcc变成arm-linux-g++,这样就会出现很多新的问题,需要我们修改makefile,以及编译的时候会出现很多错误。
2.2相关文件
2.2.1Makefile文件
我们主要需要修改2处的Makefile文件:
文件位置
修改原应
源代码
修改后代码
备注
net-snmp-5.2.1/agent/Makefile
不能识别.cpp
无
.cpp.lo:
$(LIBTOOL)--mode=compile$(CC)$(CPPFLAGS)$(CFLAGS)-c-o$@$<
在#libtooldefinitions位置
net-snmp-5.2.1/agent/mibgroup/Makefile
不能识别.cpp
无
.cpp.lo:
$(LIBTOOL)--mode=compile$(CC)$(CPPFLAGS)$(CFLAGS)-c-o$@$<
在#libtooldefinitions位置
net-snmp-5.2.1/agent/Makefile
不支持线程
CFLAGS=-g-O2-Dlinux
CFLAGS=-g-O2-Dlinux-lpthread
*Makefile中的库文件链接会在3.1中详细描述
**C文件不需要修改成CPP文件了。
2.2.2其他文件修改记录
需要修改的文件查阅,见附表一(6.1)
2.3snmp的配置文件
Snmp有一个启动引导的配置文件:
snmp.conf。
这个配置文件,需要放到设备上的路径为:
/usr/local/share/snmp/下。
snmp.conf配置文件的来源是,安装在x86环境linux下的snmp.confcopy过来的。
(x86下snmpd的安装:
只要三个步骤就可以了,打开console在net-snmp-5.2.1文件路径下运行:
1../configure2.Make3.Makeinstall)
在这段配置代码中,我们关注的,或者说启用的,只有几行:
####
#First,mapthecommunityname(COMMUNITY)intoasecurityname
#(localandmynetwork,dependingonwheretherequestiscoming
#from):
#sec.namesourcecommunity
com2seclocallocalhostpublic
com2secmynetwork192.168.0.0/24public
####
#Second,mapthesecuritynamesintogroupnames:
#sec.modelsec.name
groupMyRWGroupv1local
groupMyRWGroupv2clocal
groupMyRWGroupusmlocal
groupMyRWGroupv1mynetwork
groupMyRWGroupv2cmynetwork
groupMyRWGroupusmmynetwork
####
#Third,createaviewforustoletthegroupshaverightsto:
#incl/exclsubtreemask
viewallincluded.180
####
#Finally,grantthe2groupsaccesstothe1viewwithdifferent
#writepermissions:
#contextsec.modelsec.levelmatchreadwritenotif
accessMyROGroup""anynoauthexactallnonenone
accessMyRWGroup""anynoauthexactallallnone
这个配置文件里面还有很多信息,都是没有启用的,我们也用不关心。
将snmpd文件放到目标板/usr/sbin目录下(需要更改访问权限,否则过会不能启动),将snmpd.conf文件放在/usr/local/share/snmp/下(不存在的目录自己创建)。
现在可以启动snmpd了:
snmpd–f–Le–d.
3.Makefile和工具链的使用
3.1生成并修改完善一个我们需要Makefile
上面修改仅能保证netSnmp源代码的编译通过并在arm9上面运行起来,如何像我们自己的库文件添加到make中呢。
需要修改agent/Makefile这个文件。
3.1.1首先去xl2005/app/DoPatrol下找到Makefile文件,了解系统api是如何编译出来一个DoPatrol的。
阅读xl2005/app/DoPatrol/Makefile就能了解到了。
3.1.2然后将xl2005/app/DoPatrol/Makefile头部的索引代码copy到agent/Makefile
代码如下:
(从第10行开始添加)
#addforXL2005
PRJROOT=$(HOME)/xl2005sw
INCDIR=-I./-I$(PRJROOT)/inc
#Buildsettings
OLIBS=-lpthread-lchipsdrv-ldevdrv-lxlapi
LIBDIR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SNMP 移植 文档