我如何使用Name作为res-id而不是具有两个关键索引的MIB表中的索引

问题描述 投票:0回答:1

[问题描述]我已经定义了带有两个索引的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表中相同的代码会失败。

mapping command-line-interface snmp mib
1个回答
0
投票

在字段名称=“ index”中,应删除访问权限“ CommandFieldDefinition :: mayBeReadDuringCreate_c”。在创建节点期间,CLi应该只调用“ next-free”字段。

© www.soinside.com 2019 - 2024. All rights reserved.