Re: multiple Sub-agents managing the same table

"Arnaud BODENAN" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
Sorry Dave, but I give you my MIB in previous mails; I give you my MIB again 
as it would make things clearer.

Concerning range_subid, there was a mistake in the code I give (error on 
copy/paste)... sorry...

My table is defined something like that:
genRoot (99999)
---- genTestRoot (10000)
--------- genMetrics (1)
--------------- genServerTable (1)
---------------------genServerEntry (1)
-------------------------- genServerIndex (1)
-------------------------- genServerName (2)
-------------------------- genServerProductName (3)
-------------------------- genServerHostname (4)
-------------------------- genServerPID (5)

After reading RFC 2741 (with pointers to range_subid and range_ubound)

So now, what I'm doing is:

// Declare the Oid of genServerTable
oid genServerTableOid[] =
    { 1, 3, 6, 1, 4, 1, 99999, 10000, 1, 1 };

size_t genServerTableOidLen = OID_LENGTH(genServerTableOid);

// Get an unique index from the master agent
u_long allocatedIndex = register_int_index(genServerTableOid,
genServerTableOidLen, ANY_INTEGER_INDEX);

// Strangely, it has to begin with the index 2... @todo
while ( allocatedIndex <= 1 && allocatedIndex > 0 )
{
     allocatedIndex = register_int_index(genServerTableOid,
genServerTableOidLen, ANY_INTEGER_INDEX);
}

// Define the oid of the first column from the index returned
oid genServerAllocatedOid[] =
    { 1, 3, 6, 1, 4, 1, 99999, 10000, 1, 1, 1, allocatedIndex };
size_t genServerAllocatedOidLen = OID_LENGTH(genServerAllocatedOid);

// Define the structure of the table
netsnmp_table_data_set *genverTable = 
netsnmp_create_table_data_set("genverTable");
nesnmp_table_dataset_add_index(genverTable, ASN_UNSIGNED);
netsnmp_table_set_multi_add_default_row(genverTable,
                                            2,
                                            ASN_OCTET_STR, 0, NULL, 0,
                                            3,
                                            ASN_OCTET_STR, 0, NULL, 0,
                                            4,
                                            ASN_OCTET_STR, 0, NULL, 0,
                                            5,
                                            ASN_UNSIGNED, 0, NULL, 0,					   
          0);

netsnmp_handler_registration * handlerServerTable = 
netsnmp_create_handler_registration
("riskServerTable",
NULL,
riskServerAllocatedOid,
riskServerAllocatedOidLen,
HANDLER_CAN_RONLY);

// Set the range_subid to the first column of the row
handlerServerTable->range_subid = genServerAllocatedOidLen;

// set the range_ubound
handlerServerTable->range_ubound = 5;
}


>From: "Dave Shield" <[email protected]>
>To: "Arnaud BODENAN" <[email protected]>
>CC: [email protected]
>Subject: Re: multiple Sub-agents managing the same table
>Date: Tue, 5 Sep 2006 10:07:14 +0100
>
>On 05/09/06, Arnaud BODENAN <[email protected]> wrote:
>>Thanks Dave. What I've done now is:
>
>I'm sorry - this code is meaningless to me.
>You're listing assorted numeric OIDs, but I have no idea what MIB
>objects they refer to.
>
>I'm pretty sure that they aren't correct, since:
>
>>// Declare the top Oid for my table
>>oid genServerTableOid[] =   { 1, 3, 6, 1, 4, 1, 99999, 10000, 1, 1 };
>
>>// Define the oid of the first column from the index returned
>>oid genServerAllocatedOid[] =    { 1, 3, 6, 1, 4, 1, 99999, 10000, 1, 1, 
>>allocatedIndex };
>
>don't seem to match.   I'd expect another field in the column-instance
>OID array.
>But you've never listed your MIB file, so I'm forced to guess. And
>quite frankly, I don't have the time to waste at the moment.
>
>
>I'm also not confident that initialising an array using another
>variable is particularly safe.
>You'd probably be much safer using a dummy placeholder field, and
>explicitly inserting the index value:
>
>oid genServerAllocatedOid[] =    { 1, 3, 6, 1, 4, 1, 99999, 10000, 1,
>1, 1?,  999 };
>genServerAllocatedOid[ genServerAllocatedOidLen-1 ] = allocatedIndex;
>
>
>>// Set the range_subid to the first column of the row
>>handlerServerTable->range_subid = genServerAllocatedOid;
>
>No
>The range_subid is an *index* into this array - not the whole OID.
>Please re-read the AgentX specifications.  You clearly haven't grasped
>how this mechanism works.
>
>
>>// set the range_ubound ???
>>handlerServerTable->range_ubound = allocatedIndex;
>
>No.
>This is the value of the maximum column *object* subidentifier (the
>bit you seem to have omitted in the earlier code).   Not the row index
>(instance) subidentifier.
>
>
>
>
>>If I understand you, I should set range_ubound to 5 (I have five columns 
>>in
>>my row) ?
>
>Yes.   Or at least Probably.
>I can't be sure, 'cos you've never shown us the MIB file that defines
>this table.
>If there are five columns in the table, they would typically be numbered 
>1..5,
>in which case range_ubound would indeed be 5.
>   But if they're numbered 2..6 (for example) then ubound would be 6.
>
>
>Dave

_________________________________________________________________
Windows Live Spaces is here! It’s easy to create your own personal Web site. 
  http://spaces.live.com/signup.aspx

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642

_______________________________________________
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.