[SNMP4J] SNMP4J Problem when updating an item in a table

Zinger, Anthony J anthony.j.zinger at lmco.com
Fri Apr 28 18:33:03 CEST 2006


Hello,

  I have SNMP4J version 1.7 installed on a Windows PC running Microsoft
Windows XP Version 2002 Service Pack 2.

 

  I am using Agent++ MIB Explorer Pro to update an item in MIB table
that I have designed.  When I try to modify an item in my table, I keep
getting the error "No such name".

 

  The agent messages that are displayed are:

15524 [DefaultUDPTransportMapping_127.0.0.0/161] DEBUG
org.snmp4j.agent.DefaultMOServer  - Scanning managed object:
1.3.6.1.4.1.x.1.2.1-1.3.6.1.4.1.x.1.2.2 for
org.snmp4j.agent.CommandProcessor$VACMQuery[viewName=administratorsWrite
View]=1.3.6.1.4.1.x.1.2.1.3.11<= x <=1.3.6.1.4.1.x.1.2.1.3.11

15524 [DefaultUDPTransportMapping_127.0.0.0/161] DEBUG
org.snmp4j.agent.DefaultMOServer  - Scanning managed object:
1.3.6.1.4.1.x.2.1.0-1.3.6.1.4.1.x.2.1.0 for
org.snmp4j.agent.CommandProcessor$VACMQuery[viewName=administratorsWrite
View]=1.3.6.1.4.1.x.1.2.1.3.11<= x <=1.3.6.1.4.1.x.1.2.1.3.11

15524 [DefaultUDPTransportMapping_127.0.0.0/161] DEBUG
org.snmp4j.agent.DefaultMOServer  - Scanning managed object:
1.3.6.1.4.1.x.2.2.1-1.3.6.1.4.1.x.2.2.2 for
org.snmp4j.agent.CommandProcessor$VACMQuery[viewName=administratorsWrite
View]=1.3.6.1.4.1.x.1.2.1.3.11<= x <=1.3.6.1.4.1.x.1.2.1.3.11

15584 [DefaultUDPTransportMapping_127.0.0.0/161] DEBUG
org.snmp4j.agent.DefaultMOServer  - Scanning managed object:
1.3.6.1.6.3.15.1.1.6.0-1.3.6.1.6.3.15.1.1.6.0 for
org.snmp4j.agent.CommandProcessor$VACMQuery[viewName=administratorsWrite
View]=1.3.6.1.4.1.x.1.2.1.3.11<= x <=1.3.6.1.4.1.x.1.2.1.3.11

15584 [DefaultUDPTransportMapping_127.0.0.0/161] DEBUG
org.snmp4j.agent.DefaultMOServer  - Scanning managed object:
1.3.6.1.6.3.15.1.2.1.0-1.3.6.1.6.3.15.1.2.1.0 for
org.snmp4j.agent.CommandProcessor$VACMQuery[viewName=administratorsWrite
View]=1.3.6.1.4.1.x.1.2.1.3.11<= x <=1.3.6.1.4.1.x.1.2.1.3.11

15584 [DefaultUDPTransportMapping_127.0.0.0/161] DEBUG
org.snmp4j.agent.DefaultMOServer  - Scanning managed object:
1.3.6.1.6.3.15.1.2.2.1-1.3.6.1.6.3.15.1.2.2.2 for
org.snmp4j.agent.CommandProcessor$VACMQuery[viewName=administratorsWrite
View]=1.3.6.1.4.1.x.1.2.1.3.11<= x <=1.3.6.1.4.1.x.1.2.1.3.11

java.lang.Exception: Error 'No such name' generated at:

      at
org.snmp4j.agent.request.SnmpRequest$SnmpSubRequest.requestStatusChanged
(SnmpRequest.java:630)

      at
org.snmp4j.agent.request.RequestStatus.fireRequestStatusChanged(RequestS
tatus.java:79)

      at
org.snmp4j.agent.request.RequestStatus.setErrorStatus(RequestStatus.java
:50)

      at
org.snmp4j.agent.CommandProcessor$SetHandler.prepare(CommandProcessor.ja
va:573)

      at
org.snmp4j.agent.CommandProcessor$SetHandler.processPdu(CommandProcessor
.java:610)

      at
org.snmp4j.agent.CommandProcessor.processRequest(CommandProcessor.java:3
00)

      at
org.snmp4j.agent.CommandProcessor.dispatchCommand(CommandProcessor.java:
272)

      at
org.snmp4j.agent.CommandProcessor$Command.run(CommandProcessor.java:407)

      at
org.snmp4j.agent.CommandProcessor.processPdu(CommandProcessor.java:119)

      at
org.snmp4j.MessageDispatcherImpl.fireProcessPdu(MessageDispatcherImpl.ja
va:559)

      at
org.snmp4j.MessageDispatcherImpl.dispatchMessage(MessageDispatcherImpl.j
ava:264)

      at
org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.ja
va:325)

      at
org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.ja
va:286)

      at
org.snmp4j.transport.AbstractTransportMapping.fireProcessMessage(Abstrac
tTransportMapping.java:83)

      at
org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(Default
UdpTransportMapping.java:284)

 

  After doing some further investigation, I found the following lines in
lookup() method in DefaultMOServer.java, that I is causing my problem:

 

        MOScope moScope = mo.getScope();

        if ((query.getScope().isOverlapping(moScope)) &&

            (query.matchesQuery(mo))) {

          fireLookupEvent(mo, query);

          return mo;

        }

 

  If I change the line:

if ((query.getScope().isOverlapping(moScope)) &&

(query.matchesQuery(mo))) {

 

  To be:

      if ((query.getScope().isOverlapping(moScope)) ||

             (query.matchesQuery(mo))) {

 

  Then I can successfully modified items in my table.

 

  My question is this an error or am I not registering my Managed
Objects correctly or defining my access views correctly.  I generated
the code for my agent by using the Agent++ AgenPro2 to compile my MIB.
Therefore, it generates all of the Managed Objects to register.  Also,
for my access views, I have created a read and write access.  Both of
these access views allow all of my MIB to be read or written.

 

  Thanks in advance for your help and answers. 

 

  A sample of my mib is the following:

 

a OBJECT IDENTIFIER 

      ::= { x 1 }

 

count OBJECT-TYPE

      SYNTAX  INTEGER (0..65535)

      MAX-ACCESS read-only

      STATUS current

      DESCRIPTION ""

      DEFVAL { 0 }

      ::= { a 1 }

 

aTable OBJECT-TYPE

      SYNTAX  SEQUENCE OF AEntry

      MAX-ACCESS not-accessible

      STATUS current

      DESCRIPTION ""

      ::= { a 2 }

 

aEntry OBJECT-TYPE

      SYNTAX  AEntry

      MAX-ACCESS not-accessible

      STATUS current

      DESCRIPTION ""

      INDEX { aIndex }

      ::= { aTable 1 }

 

AEntry ::= SEQUENCE {

    aIndex     INTEGER,

    aRowStatus RowStatus,

    aName      OCTET STRING }

 

aIndex OBJECT-TYPE

      SYNTAX  INTEGER (0..65535)

      MAX-ACCESS read-create

      STATUS current

      DESCRIPTION ""

      ::= { aEntry 1 }

 

aRowStatus OBJECT-TYPE

      SYNTAX  RowStatus

      MAX-ACCESS read-create

      STATUS current

      DESCRIPTION ""

      ::= { aEntry 2 }

      

aName OBJECT-TYPE

      SYNTAX  OCTET STRING (SIZE (1..64))

      MAX-ACCESS read-create

      STATUS current

      DESCRIPTION ""

      ::= { aEntry 3 }

 

Anthony J. Zinger




More information about the SNMP4J mailing list