SNMP SMIv2 MIB:如何在序列中获得用户定义的文本约定的序列以干净利落?

问题描述

我正在尝试生成一个完全 smilint 验证的 MIB 文件,但我很难弄清楚如何在 SEQUENCE 块中创建用户定义的文本约定的序列。

以下是我从 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-in-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),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),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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)