【问题标题】:How Can I use Name as res-id instead of index in a MIB table with two key indexes如何在具有两个关键索引的 MIB 表中使用名称作为 res-id 而不是索引
【发布时间】:2020-03-11 01:53:59
【问题描述】:

[问题描述]
我定义了一个有两个索引的 MIB 表,表是这样的:

TerminationEntry OBJECT-TYPE
SYNTAX TerminationEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"An entry in the terminationTable ."
INDEX {ifIndex, TkId}
::= {terminationTable 1}

而Tkname和TkId映射表为:

TkMappingEntry::=
    SEQUENCE            
    {
        tkMappingName            OCTET STRING,
        tkMappingId              INTEGER
    }

在 CLI 中,我定义了两个 res-id 映射到这两个索引。而对于TkId,用户需要输入TkName,TkName可以映射到TkId。 CLI XML 是这样的:

<parameters>
    <res-id uname="if-index" parameter-type="Itf::Line"> 
     <help>The unique internal identifier of the termination port</help>
     <fields>
       <field name="">
         <mib-index name="ifIndex"/>
       </field>
     </fields>
    </res-id>

    <res-id name="tkgname" parameter-type="Sip::TkName">
     <help>The name of Tk.</help>
     <fields>
       <field name="" access="CommandFieldDefinition::mayBeReadDuringDisplay_c  |
                            CommandFieldDefinition::mayBeWrittenDuringCreate_c">
         <mib-var tree-node="NODEterminationTkName" table-name="terminationTable "/>
         <mib-index name="tkMappingName"/>
       </field>
     </fields>
    </res-id>
<parameters>
...
<fields>
    <field name="index" basic-type="Sip::TkId"
             access="CommandFieldDefinition::mayBeReadDuringPrepare_c |
             CommandFieldDefinition::mayBeReadDuringModify_c  |
             CommandFieldDefinition::mayBeReadDuringCommit_c  |
             CommandFieldDefinition::mayBeReadDuringDelete_c  |
             CommandFieldDefinition::mayBeReadDuringIn_c      |
             CommandFieldDefinition::mayBeReadDuringDisplay_c |
             CommandFieldDefinition::mayBeReadDuringCreate_c">
        <mib-var tree-node="NODEtkMappingId" table-name="tkMappingTable"/>
        <mib-index name="terminationTkId"/>
    </field>

    <field name="next-free" basic-type="Sip::TrunkGroupId" access="CommandFieldDefinition::mayBeReadDuringCreate_c">
        <mib-var tree-node="NODE_tkIdNext" table-name="SnmpAgent::localScalarTable_m"/>
        <mib-index name="terminationTkId"/>
    </field>
</fields>

但是在测试的时候,我发现当我输入一个不存在的TkName时,调用了next-free字段,并且这个空闲索引存储在节点tkIdNext中。但它并没有转移到terminationTkId。所以我的 CLI 命令失败,我在 CLI 上收到错误:引用的实例不存在。

[注意]
请帮助检查代码并帮助我找出名称/ID映射失败的原因。顺便说一下,我已经尝试过signle index MIB表中的name/id映射,没有问题。我不知道为什么相同的代码在两个索引的 MIB 表中会失败。

【问题讨论】:

    标签: mapping command-line-interface snmp mib


    【解决方案1】:

    在字段名=“索引”中,应删除访问“CommandFieldDefinition::mayBeReadDuringCreate_c”。
    在创建节点时,CLi 应该只调用“next-free”字段。

    【讨论】:

      猜你喜欢
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多