snmp - SNMP SMIv2 MIB:如何在 SEQUENCE 中获取用户定义的 TEXTUAL-CONVENTION 的 SEQUENCE 以干净地进行 lint?
问题描述
我正在尝试生成一个完全经过验证的 MIB 文件,但很难弄清楚如何在 SEQUENCE 块中创建用户定义的 TEXTUAL-CONVENTION 的序列。
以下是我从 smilint 收到的消息(尽管我只关心第一个错误):(https://www.ibr.cs.tu-bs.de/bin/smitools.cgi)
mibs/table_test.mib:44: [2] {basetype-unknown} type `TYPEMyEnumTable' of node `myenumTable' does not resolve to a known base type
mibs/table_test.mib:18: [5] {group-unref} warning: current group `myObjectGroup' is not referenced in this module
我在 MIB Smithy 网站上读到一些 MIB 编译器不允许从其他 TEXTUAL-CONVENTION 声明派生 TEXTUAL-CONVENTION 声明,在我看来这可能是问题的根源。但是,如果这不是 smilint-clean,是否存在不涉及重建数据以更好地适应 SNMP 的 SEQUENCE-within-SEQUENCE 范式的替代机制?
我可以看到,如果我将所有数据都呈现为 SEQUENCE 类型的 SEQUENCE 会更合适,但是我试图包装 SNMP 的固件并不总是给我那种奢侈,所以我希望找到一个简单干净的替代方案,避免重组我的设备数据。:-(
这是我一直用作测试平台的独立最小 MIB 文件:
TEST-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-TYPE, MODULE-IDENTITY, enterprises FROM SNMPv2-SMI
TEXTUAL-CONVENTION FROM SNMPv2-TC
OBJECT-GROUP FROM SNMPv2-CONF
;
testBase MODULE-IDENTITY
LAST-UPDATED "202106070000Z"
ORGANIZATION "www.me.com"
CONTACT-INFO "me@me.com"
DESCRIPTION "Test MIB"
REVISION "202106070000Z"
DESCRIPTION "First draft"
::= { enterprises 65535 }
myObjectGroup OBJECT-GROUP
OBJECTS { myenumSingle, myenumTable }
STATUS current
DESCRIPTION "Object conformance group"
::= { testBase 1 }
TYPEMyEnum ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION "My enum (type)"
SYNTAX INTEGER { myenumThis(65), myenumThat(68), myenumTheOther(69) }
TYPEMyEnumTable ::= SEQUENCE OF TYPEMyEnum
-- Note: the following version also doesn't work
-- TYPEMyEnumTable ::= TEXTUAL-CONVENTION
-- STATUS current
-- DESCRIPTION "My enum table (type)"
-- SYNTAX SEQUENCE OF INTEGER { myenumThis(65), myenumThat(68), myenumTheOther(69) }
-- Note: the following version also doesn't work
-- TYPEMyEnumTable ::= TEXTUAL-CONVENTION
-- STATUS current
-- DESCRIPTION "My enum table (type)"
-- SYNTAX SEQUENCE OF Integer32 { myenumThis(65), myenumThat(68), myenumTheOther(69) }
TestSEQ ::= SEQUENCE {
myenumSingle TYPEMyEnum,
myenumTable TYPEMyEnumTable
}
myenumSingle OBJECT-TYPE
SYNTAX TYPEMyEnum
MAX-ACCESS read-write
STATUS current
DESCRIPTION "My enum (single instance)"
::= { testBase 2 }
myenumTable OBJECT-TYPE
SYNTAX TYPEMyEnumTable
MAX-ACCESS read-write
STATUS current
DESCRIPTION "My enum (table of instances)"
::= { testBase 3 }
END
解决方案
推荐阅读
- python - globals()['variable']=在 .py 文件中设置的值不会反映在其他 .py 文件中使用时的值更改
- sql - SQL Server 2000 上没有活动的事务
- javascript - 过滤键值对内数组中的特定值
- python - tkinter 循环遍历按键列表
- php - 如何在 PHP 中使用 foreach 循环 MYSQL 月份将月份添加到 +1 个月?
- mongodb - 查找 mongoDB 中是否不存在集合
- html - 如何在网格单元格中垂直居中元素?
- c# - 如何向 Windows 窗体应用程序调用 Web 服务异步方法?
- javascript - 使用 JavaScript 调整 td 或 tr 位置
- python - 为什么是这个值?