收藏 分销(赏)

用来编译和w100f1.diandian.com更新WindNet.doc

上传人:pc****0 文档编号:7813264 上传时间:2025-01-18 格式:DOC 页数:4 大小:52.50KB 下载积分:10 金币
下载 相关 举报
用来编译和w100f1.diandian.com更新WindNet.doc_第1页
第1页 / 共4页
用来编译和w100f1.diandian.com更新WindNet.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
用来编译和更新WindNet (3)$(WIND_BASE)/target/src/snmpv1/下的程序描述 凡注明“WindNet”的文件均是WindNet软件包提供的,否则就是本人创建和编写的。在本小节内提到的“Agent”指狭义的SNMP Agent,除此之外,“Agent”均指广义的网管Agent,即本人所做的工作在整个系统中所扮演的角色。 一级子目录agent/: Makefile 用来编译和更新WindNet。 snmpIoLib.c(WindNet) SNMP Agent I/O, 包含了 snmpIoInit(),,snmpIoClose(),snmpIoMain(),snmpIoBody(),snmpIoCommunityValidate()等函数,可根据实际情况修改,特别是snmpIoWrite()和snmpIoCommunityValidate(),一定要做相应的配置。这些函数的具体描述请参阅WindNet SNMPv1/v2c,P47)。 snmpMib2.mib(WindNet) MIB2的控制文件,决定MIB Method Routines的函数名等。控制MIB主要用到三个关键字:FORCE-INCLUDE,DEFAULT,EXCLUDE,具体用法请参阅WindNet SNMPv1/v2c,P80:mibcomp Extensions。 ilmiMib.mib ILMI MIBs的控制文件。 anmPrivMib.mib ATM网管自定义MIB的控制文件。 snmpMib2.c,mibhand.h,mibleaf.h mibcomp的生成文件,snmpMib2.c定义了MIB的内部存储格式,mibhand.h是对Method Routines的声明,mibleaf.h是对MIB常量的定义。 二级子目录agent/anm_rtns: 二级子目录agent/ilmi_rtns: 二级子目录agent/snmp_rtns(WindNet): 各个MIB的Method Routines,每个文件对应于一个Group。在写这些函数时,可先用mibcomp –stub生成.c文件,再在此文件上做修改,这样可省却许多录入工作。 一级子目录rfc_mibs/(WindNet): 标准的RFC MIBs,如rfc1213.mib等。 一级子目录anm_mibs/: ILMI MIBs,ATM Private MIB等与ATM相关的非RFC MIBs。 (4)在开发阶段编译Agent的一般步骤 环境: 主机为tmn2,WindNet源程序也在tmn2上; 当前用户为wrs,这是专为调试而建立的用户; 目标机为mv162,其CPU为MC68LC040。 (a) 设置环境变量: % source ~wrs/.cshrcsnmp .cshrcsnmp是本人建立的一个配置文件,定义了有关SNMP的环境变量和mibcomp、cc68k的一些常用选项。它不是系统的缺省文件,所以需要手动执行。.cshrc才是系统的缺省配置文件,在用户登录时自动执行。 (b) 编译WindNet: % cd ~wrs/wind/target/src/snmpv1/agent % make CPU=MC68LC040 TOOL=gnu 此举将编译本目录下Makefile中所列出的相关文件,make的结果是得到最新版本的~wrs/wind/target/lib/libMC68LC040gnuvx.a (c) 配置和编译vxWorks: % launch& (如果是开机后第一次运行Tornado的调试工具,则执行 source ~wrs/startit&) 选择target server:mv162@tmn2; (如果该target server不存在,请先创建它,target server的配置如下: tgtsvr <target_IP> -A –V –n mv162 –B wdbrpc –f a.out 具体的用法请参阅Tornado User’s Guide:The Tornado Launcher,P105) 在launch面板上选择WindCFG,在随后打开的配置窗口依次选择mv162lc,windNet,注意必须有以下两项内容: #INCLUDE_MIB2_ALL #INCLUDE_SNMPD 在上面打开的配置窗口中依次点击Config按钮和Build按钮,开始编译vxWorks内核。 (d) 重新启动目标机。 (e) 编译其它Agent程序: 在$(ATMNET_BASE)/目录下运行make,将最终的目标文件下载到目标机调试。 (5)在开发阶段扩展MIB的一般步骤 (a) 用ASN.1编写MIB。如果要实现已有MIB中被控制MIB EXCLUDE掉的Group,则将相应的EXCLUDE语句注释掉。 (b) 写Method Routines。这可能会涉及到修改或创建以下三个文件:xxxMib.h,xxxInfoLib.h,xxxInfoLib.c,其中xxxMib.h是该MIB的类型和常量定义,xxxInfoLib.c为method routines提供支持,是后者的信息来源。 (c) 在~wrs/wind/target/src/snmpv1/agent/目录下的Makefile中OBJS一项增补相应的.o文件。 (d) make。见前述“在开发阶段编译Agent的一般步骤”(a)~(d)。 (四)讲讲开发过程中遇到的一些令人头疼的问题 在开发过程中经常遇到一些小问题,它们一开始总是以令人迷惘的面貌出现,本人不才,往往花了很长时间,才得以摆脱这种山穷水尽的境地。今天把这些问题抖出来,或简或易,也许对大家有所帮助,为维护本人声誉,望家丑不要外扬。问题排名不分先后,想到哪,写到哪。 (1) 问:我的Agent SNMP Daemon已经起来了。我在同一个目标机或者开发主机上运行Manager程序,能够Get/Set;但是有一台远端的计算机运行Manager程序,Agent的IP地址、UDP端口(161)、Community都没有给错,却总是超时。怎搞? 答:如果Manager和Agent不在一个网段上的话,就必须在Agent所在目标机上配置路由表,具体做法如下: 在WindSh中,键入:routeAdd <manager_IP> <gateway_IP> 当然罗,也可以在程序中以函数的形式配置,routeAdd()的调用格式请参阅VxWorks 5.3.1 Reference Manual。 (2) 问:我有两个程序,A.c和B.c,A.c引用了B.c中定义的变量或函数,B.c引用了A.c中定义的变量或函数。这样,无论我先下载哪个程序,都会出现这样的warning:xxx undefined,当程序执行到调用这个“undefined”的函数时,就会报:Illegal Instruction,如果是变量也会出错。如果我不想改程序,那该怎么办哪? 答:步骤如下: (a)两个程序先分别编译(记住别链接喔,别忘了在ccxxx后面跟上-c); (b)静态链接,ldxxx –r –o C.o A.o B.o,-r 表示在下载时允许在次链接(Relocateable!); (c)下载C.o。 (3) 问:我看WindNet天价提供的MIB2 Method Routines中,Scalar Groups都没有_next() Routine,俺可不可以也不写呀? 答:可以啊,在控制MIB中用DEFAULT关键字声明,比如: system OBJECT-TYPE --DEFAULT next-function-async std-next-async ::= { mib-2 1 } 不过,std-next-async只适用于Scalar Objects,对于Tabular Objects,_next()是一定要人写的。有关控制MIB的关键字DEFAULT的用法,可参阅WindNet SNMPv1/v2c ,P82。 (4) 问:有些MIB有obsolete或者deprecated的对象,在响应Get/Get-next时,我懒得给它们赋值(说真的我也不知道该赋什么好),但是又不想返回错误,你说怎么办嘛!如果我什么都不做,即在xxx_get_value()中,如下写: case LEAF_xxx: /* 假设该leaf是obsolete或deprecated */ break; 则会引起tSnmpd任务死掉的! 答:可用如下语句替代上述语句: case LEAF_xxx: /* 假设该leaf是obsolete或deprecated */ getproc_got_empty (pktp, vbp); break; 这就是给它赋了NULL了。 (5) 问:如何共享另一台工作站上的目录? 答:假设px是资源提供者,tmn2是要求共享者,可做如下操作: px: # /usr/lib/nfs/mountd # /usr/lib/nfs/nfsd # share –o ro <share_dir> 其中#表示超级用户,ro表示Read Only;若要可读可写,则选择rw。 tmn2: # mount px:<share_dir> <mount_dir> 其中<mount_dir> 是tmn2上的一个目录,它原来的内容将被隐藏,当umount之后再还我庐山真面目。 这样,对tmn2的用户来说,<mount_dir>中的目录和文件虽然位于px上,但是其显示和操作就跟在本地机上的一样。 (一) 4
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服