Adding row indices for a new table row created by a manager

"Homan, Dave" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <A2A1310793A19942B3F8923D69C78D7A909091BF8A@MALIBU.sarnoff.internal>
Hi all,

I am using NetSNMP 5.5, and have created a simple subagent using mib2c.create-dataset.conf to manage a table.
I've had great success using the table data set handler, but now I want to support row creation from an SNMP manager.

Can someone please clarify how (or if) table_dataset.c creates indices for new rows if the values are NOT specified in an SNMP SET request?

For example, given the eval table from RFC 2578 (see below), how would I create a new row from a manager, assuming I was running a subagent with handler code (created using mib2c.cretae-dataset.conf)?  Note that evalIndex is read-only - this appears to be common in MIBs when using numeric indices.  I can certainly set MAX-ACCESS of the evalIndex 'read-create' and simply supply the index value in the multivariable SET, but I kinda wanted to know how the big boys do it with a 'read-only' index.

I have been able to set all the other columnar objects (including the RowStatus column) using a multivariable snmpset (with no index value supplied).  I can see the columnar values of the new row using snmpget.

I also tried setting the RowStatus value to 'active', thinking this might trigger some row index activity in the table data set handler.  When I try to get the value of the index, I get a "no such instance message".

Regards,

Dave

   Consider how one might define a conceptual table and its
   subordinates.  (This example uses the RowStatus textual convention
   defined in [3].)

   evalSlot OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The index number of the first unassigned entry in the
               evaluation table, or the value of zero indicating that
               all entries are assigned.

               A management station should create new entries in the
               evaluation table using this algorithm:  first, issue a
               management protocol retrieval operation to determine the
               value of evalSlot; and, second, issue a management
               protocol set operation to create an instance of the
               evalStatus object setting its value to createAndGo(4) or
               createAndWait(5).  If this latter operation succeeds,
               then the management station may continue modifying the
               instances corresponding to the newly created conceptual
               row, without fear of collision with other management
               stations."
      ::= { eval 1 }

   evalTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF EvalEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "The (conceptual) evaluation table."
      ::= { eval 2 }

   evalEntry OBJECT-TYPE
       SYNTAX      EvalEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "An entry (conceptual row) in the evaluation table."
      INDEX   { evalIndex }
      ::= { evalTable 1 }

   EvalEntry ::=
       SEQUENCE {
           evalIndex       Integer32,
           evalString      DisplayString,
           evalValue       Integer32,
           evalStatus      RowStatus
       }

   evalIndex OBJECT-TYPE
       SYNTAX      Integer32 (1..2147483647)
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
               "The auxiliary variable used for identifying instances of
               the columnar objects in the evaluation table."
           ::= { evalEntry 1 }

   evalString OBJECT-TYPE
       SYNTAX      DisplayString
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
               "The string to evaluate."
           ::= { evalEntry 2 }

   evalValue OBJECT-TYPE
       SYNTAX      Integer32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
               "The value when evalString was last evaluated, or zero if
                no such value is available."
       DEFVAL  { 0 }
           ::= { evalEntry 3 }

   evalStatus OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-create
       STATUS      current
       DESCRIPTION
               "The status column used for creating, modifying, and
               deleting instances of the columnar objects in the
               evaluation table."
    DEFVAL  { active }
        ::= { evalEntry 4 }





This message (and any attachments) contains Sarnoff proprietary information. Such information may be subject to the terms of confidentiality or other agreements. If you are not the named addressee, you should not disseminate, distribute, or copy this email. If you have received this email by mistake, please notify the sender immediately by email and delete this email from your system. If you are not the intended recipient, you are notified that disclosing, copying, distributing, or taking any action in reliance on the contents of this information is strictly prohibited.

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand 
malware threats, the impact they can have on your business, and how you 
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl

_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.