读书频道 > 网站 > 网页设计 > 深入理解Net-SNMP
2.7 宏定义
15-09-06    下载编辑
收藏    我要投稿   

本文所属图书 > 深入理解Net-SNMP

本书是首部从实战的角度讲解Net-SNMP开发的书籍。本书从网络管理概念开始,到MIB的开发设计,最后到使用Net-SNMP开发网络管理应用,实现了由网络管理理论到实践的落地。它有以下几个特点:书中内容由项目而生,以立即去当当网订购
在SNMP中大量使用了宏,有必要作个了解。宏作为ASN.1中对数据类型的一种扩展机制,提供了一种新的定义对象的形式。与构造类型不同的是:宏可以定义新的标记形式,并且能构造更复杂的结构,描述更详细的语义。使用它定义的类型或值都具有相同的标记形式,因为它们都是宏定义的“模板”的实例。
 
与模块的定义类似,宏的定义也很简单:MACRO作为宏定义的关键字,由BEGIN开始,END结束。其定义形式如下:
 
<macro name> MACRO ::=
BEGIN
    TYPE NOTATION ::=  -- 类型定义
    VALUE NOTATION ::= -- 值定义
END

 

 
ASN.1中标记方式的本质就是对类型的和类型值的定义。一个对象一旦完成对类型和值的赋值,该对象也就确定了。上述的TYPE NOTATION和VALUE NOTATION就是对类型和值的定义。下面看看RFC1212中定义的OBJECT-TYPE宏(省略了部分内容),有了前面的知识应该很容易看懂该宏的实现:
 
OBJECT-TYPE MACRO ::=
        BEGIN
            TYPE NOTATION ::=
              --双引号作为终结符,里面的内容在使用时直接照写
              -- RFC1155中的 ObjectSyntax
             "SYNTAX" type(ObjectSyntax)
            "ACCESS" Access
             "STATUS" Status
             DescrPart
         -- value (VALUE X) 该格式将value值限制为X类型
          VALUE NOTATION ::= value (VALUE ObjectName)
             Access ::= "read-only"
                         | "read-write"
                         | "write-only"
                         | "not-accessible"
             Status ::= "mandatory"
                         | "optional"
                         | "obsolete"
                         | "deprecated"
             DescrPart ::=
                    "DESCRIPTION" value (description DisplayString)
                         | empty
        END
以下是使用OBJECT-TYPE宏定义对象的例子:
alarmNumber OBJECT-TYPE
SYNTAX INTERGER  ( 0 .. 32767  )
MAX-ACCESS read-only
STATUS current
DESCRIPTION "how many real alarm now"
::=  {  zcqRealAlarm  1  }

 

 
宏一般在模块中定义,并导出供其他模块使用。由宏定义的对象的传输编码与所使用的具体类型一致,也就是上述代码注释部分的X类型。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站