- 深入理解Net-Snmp
- 张春强
- 378字
- 2023-02-10 18:18:55
2.6 模块定义
模块,顾名思义就是具有某种“功能”的独立结构。ASN.1作为一种标记语言,主要的功能就是对信息的描述。所以应该从这个角度来理解模块。模块实际就是一组类型和值的定义,是描述某种信息的一组定义的集合,其没有规模大小的限制。在SNMP里,SMI和MIB都是ASN.1的模块。这当然也包括企业或个人开发的私有MIB。模块的定义方法很简单:DEFINITIONS作为模块定义的关键字,由BEGIN开始,END结束。所使用的符号都在表2-2里,其定义的形式如下:
<modulereference> DEFINITIONS ::= BEGIN --模块头部 EXPORTS -- 可选,导出本模块的数据类型或值,类比与C语言中的导出的(接口)符号 IMPORTS -- 可选,导入其他模块的数据类型或值,类比于C语言中的#include --模块主体 AssignmentList –- 模块内容定义 END
其中EXPORTS和IMPORTS子句的形式类似,多个类型或值间用逗号隔开最后以分号结束,IMPORTS子句中还带有FROM,其后接模块名,表示从哪个模块导入数据类型或值。
IMPORT < 类型或值1,类型或值2...> FROM < 模块名 1> < 类型或值1,类型或值2...> FROM < 模块名 2> ...; EXPORTS < 类型或值1,类型或值2...>;
注意
模块中的类型可以先使用后定义。IMPORT和EXPORTS最后一定要以分号结束。