宏作为一种数据扩展机制,在SNMP中起着举足轻重的作用,实际上我们定义MIB时一直都在使用宏。如OBJECT-TYPE宏,它将管理对象所有的信息都囊括在一个宏中,使用在这样的一个模板,不仅保证了任何一方管理对象的一致性,也提供了一种编写MIB的简约而集成的方式。
在SMIv1中主要包括以下的宏定义:OBJECT-TYPE、TRAP-TYPE;在SMIv2中定义了SNMP v2-SMI模块,该模块中主要定义了四个宏,它们分别是:MODULE-IDENTITY、OBJECT-IDENTITY、OBJECT-TYPE、NOTIFICATION-TYPE。其中OBJECT-IDENTITY和OBJECT-TYPE,是基于SMIv1的改进版本;MODULE-IDENTITY和NOTIFICATION-TYPE则是新增的宏。下面简要地介绍它们,更详细的信息可以参考RFC2578。
另外,SMIv2中也定义了MIB实现和兼容相关的宏,以及数据类型扩展的宏,如文本约定。