[问题描述]我已经定义了带有两个索引的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上收到错误消息:所引用的实例不存在。
[note]请帮助检查代码,并帮助我查找名称/标识映射失败的原因。顺便说一句,我已经尝试了信号索引MIB表中的名称/标识映射,没有问题。我不知道为什么在两个索引MIB表中相同的代码会失败。
在字段名称=“ index”中,应删除访问权限“ CommandFieldDefinition :: mayBeReadDuringCreate_c”。在创建节点期间,CLi应该只调用“ next-free”字段。