【发布时间】: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