用来编译和更新WindNet

上传人:宝路 文档编号:21438190 上传时间:2017-11-23 格式:DOC 页数:4 大小:52.82KB
返回 下载 相关 举报
用来编译和更新WindNet_第1页
第1页 / 共4页
用来编译和更新WindNet_第2页
第2页 / 共4页
用来编译和更新WindNet_第3页
第3页 / 共4页
用来编译和更新WindNet_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《用来编译和更新WindNet》由会员分享,可在线阅读,更多相关《用来编译和更新WindNet(4页珍藏版)》请在金锄头文库上搜索。

1、1用来编译和更新 WindNethttp:/ WindNet 软件包提供的,否则就是本人创建和编写的。在本小节内提到的“Agent”指狭义的 SNMP Agent,除此之外, “Agent”均指广义的网管 Agent,即本人所做的工作在整个系统中所扮演的角色。一级子目录 agent/:Makefile用来编译和更新 WindNet。snmpIoLib.c(WindNet )SNMP Agent I/O, 包含了 snmpIoInit(), ,snmpIoClose(),snmpIoMain() ,snmpIoBody(),snmpIoCommunityValidate()等函数,可根据实际情况

2、修改,特别是 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.mibILMI MIBs 的控制文件。anmPrivMib.mibATM

3、网管自定义 MIB 的控制文件。snmpMib2.c,mibhand.h,mibleaf.hmibcomp 的生成文件,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 文件,再在此文件上做修

4、改,这样可省却许多录入工作。一级子目录 rfc_mibs/(WindNet ):标准的 RFC MIBs,如 rfc1213.mib 等。一级子目录 anm_mibs/:ILMI MIBs,ATM Private MIB 等与 ATM 相关的非 RFC MIBs。2(4)在开发阶段编译 Agent 的一般步骤环境: 主机为 tmn2,WindNet 源程序也在 tmn2 上;当前用户为 wrs,这是专为调试而建立的用户;目标机为 mv162,其 CPU 为 MC68LC040。(a) 设置环境变量:% source wrs/.cshrcsnmp.cshrcsnmp 是本人建立的一个配置文件,定

5、义了有关 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& (如果是开机后第一次运行 Tornad

6、o 的调试工具,则执行 source wrs/startit&)选择 target server:mv162tmn2;(如果该 target server 不存在,请先创建它,target server 的配置如下:tgtsvr -A V n mv162 B wdbrpc f a.out具体的用法请参阅 Tornado Users Guide:The Tornado Launcher,P105)在 launch 面板上选择 WindCFG,在随后打开的配置窗口依次选择mv162lc,windNet,注意必须有以下两项内容:#INCLUDE_MIB2_ALL#INCLUDE_SNMPD在上面打开

7、的配置窗口中依次点击 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,其中 xxxM

8、ib.h 是该 MIB 的类型和常量定义,xxxInfoLib.c 为 method routines 提供支持,是后者的信息来源。(c) 在wrs/wind/target/src/snmpv1/agent/目录下的 Makefile 中 OBJS 一项增补相应的.o 文件。(d) make。见前述“在开发阶段编译 Agent 的一般步骤” (a)(d) 。3(四)讲讲开发过程中遇到的一些令人头疼的问题在开发过程中经常遇到一些小问题,它们一开始总是以令人迷惘的面貌出现,本人不才,往往花了很长时间,才得以摆脱这种山穷水尽的境地。今天把这些问题抖出来,或简或易,也许对大家有所帮助,为维护本人声誉,

9、望家丑不要外扬。问题排名不分先后,想到哪,写到哪。(1) 问:我的 Agent SNMP Daemon 已经起来了。我在同一个目标机或者开发主机上运行 Manager 程序,能够 Get/Set;但是有一台远端的计算机运行 Manager 程序,Agent 的 IP 地址、UDP 端口(161) 、Community 都没有给错,却总是超时。怎搞?答:如果 Manager 和 Agent 不在一个网段上的话,就必须在 Agent 所在目标机上配置路由表,具体做法如下:在 WindSh 中,键入:routeAdd 当然罗,也可以在程序中以函数的形式配置,routeAdd()的调用格式请参阅 Vx

10、Works 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 表示在下载时

11、允许在次链接(Relocateable!) ;(c)下载 C.o。(3) 问:我看 WindNet 天价提供的 MIB2 Method Routines 中,Scalar Groups 都没有_next() Routine,俺可不可以也不写呀?答:可以啊,在控制 MIB 中用 DEFAULT 关键字声明,比如:system OBJECT-TYPE-DEFAULT next-function-asyncstd-next-async:= mib-2 1 不过,std-next-async 只适用于 Scalar Objects,对于 Tabular Objects,_next()是一定要人写的。有

12、关控制 MIB 的关键字 DEFAULT 的用法,可参阅 WindNet SNMPv1/v2c ,P82。(4) 问:有些 MIB 有 obsolete 或者 deprecated 的对象,在响应 Get/Get-next 时,我懒得给它们赋值(说真的我也不知道该赋什么好) ,但是又不想返回错误,你说怎么办嘛!如果我什么都不做,即在 xxx_get_value()中,如下写:case LEAF_xxx: /* 假设该 leaf 是 obsolete 或 deprecated */break;4则会引起 tSnmpd 任务死掉的!答:可用如下语句替代上述语句:case LEAF_xxx: /*

13、假设该 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 其中#表示超级用户,ro 表示 Read Only;若要可读可写,则选择 rw。tmn2:# mount px: 其中 是 tmn2 上的一个目录,它原来的内容将被隐藏,当 umount 之后再还我庐山真面目。这样,对 tmn2 的用户来说,中的目录和文件虽然位于 px 上,但是其显示和操作就跟在本地机上的一样。(一)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号