OK, Thanks a lot for the answer. I agree with you concerning the call to register_int_index, and I just modify the code this morning ;o)
My initialization code now looks like this: void init_GenServerTable() { netsnmp_table_data_set *genServerTable = netsnmp_create_table_data_set("genServerTable"); netsnmp_table_dataset_add_index(genServerTable, ASN_UNSIGNED); netsnmp_table_set_multi_add_default_row(genServerTable, 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_register_table_data_set(netsnmp_create_handler_registration ("genServerTable", NULL, genServerTableOid, genServerTableOidLen, HANDLER_CAN_RWRITE), genServerTable, NULL); // Add a Row netsnmp_table_row *row = netsnmp_create_table_data_row(); u_long ind = register_int_index(genServerTableOid, genServerTableOidLen, ANY_INTEGER_INDEX); if ( ind == 0 ) { ind = register_int_index(genServerTableOid, genServerTableOidLen, ANY_INTEGER_INDEX); } snmp_log(LOG_INFO,"Index found=%d.\n", ind); netsnmp_table_row_add_index(row, ASN_UNSIGNED, &ind, sizeof(ind)); netsnmp_set_row_column(row, 2, ASN_OCTET_STR, "Test1", strlen("Test1")); netsnmp_set_row_column(row, 3, ASN_OCTET_STR, "Test2", strlen("Test2")); netsnmp_set_row_column(row, 4, ASN_OCTET_STR, "Test3", strlen("Test3")); u_long pid = 1500; netsnmp_set_row_column(row, 5, ASN_UNSIGNED, (const char *)&pid, sizeof(pid)); netsnmp_table_dataset_add_row(genServerTable, row); } When I launch my subagents twice, and execute an snmpwalk on riskServerTable, I receive: GEN-MONITORING-MIB::genServerName.1 = STRING: "Test1" GEN-MONITORING-MIB::genServerProductName.1 = STRING: "Test2" GEN-MONITORING-MIB::genServerHostname.1 = STRING: "Test3" GEN-MONITORING-MIB::genServerPID.1 = Gauge32: 1500 but I hoped that it answers me the following added lines: GEN-MONITORING-MIB::genServerName.2 = STRING: "Test1" GEN-MONITORING-MIB::genServerProductName.2 = STRING: "Test2" GEN-MONITORING-MIB::genServerHostname.2 = STRING: "Test3" GEN-MONITORING-MIB::genServerPID.2 = Gauge32: 1500 I check netsnmp_table_dataset_add_row, but it returns no value (void). Moreover, when I execute the second binary, I have no error message so it seems to work ok. >From: "Dave Shield" <[EMAIL PROTECTED]> >To: "Arnaud BODENAN" <[EMAIL PROTECTED]> >CC: net-snmp-users@lists.sourceforge.net >Subject: Re: multiple Sub-agents managing the same table >Date: Mon, 4 Sep 2006 13:23:48 +0100 > >On 02/09/06, Arnaud BODENAN <[EMAIL PROTECTED]> wrote: >>I have tested the function register_int_index to generate an unique index >>and added it in the registration of my table genServerTable. >> .... I log the index returned by >>the function register_int_index (I have to increment it after the call of >>register_int_index, as the first index returned by register_int_index >>begins >>with 0 instead of 1) > >Errr... that doesn't sound safe. >If you've asked 'register_int_index' to give you an arbitrary index, >then you should be using the value that it gives you, since that's >what it has allocated. You might get away with this as long as it's >only your code that uses the result, and this *all* processes things >in the same way. > But it feels much safer for the first application to register *two* >indexes (0 and 1), and only actually use the second one. Or in >general, for each application to check the returned value, and request >a second index if the first one was 0. > > > >>All seems to be OK (in the log and in the attribution of the index): >>Application 1 registers the row 1 >>Application 2 registers the row 2 >>Application 3 registers the row 3 >>Application 4 registers the row 4 > >This is extra code, registering the row using the index just supplied - >yes? >What does this code look like? Does the registration succeed? > > >>But when I execute a snmpwalk or a snmpget, I only get metrics for the >>index >>1. The rows 2, 3, and 4 have not been registered. > >What does walking the nsRegistryTable look like? > > >>I appreciate any help about this problem. and I would like to know if my >>approach (share the same table by several applications) is possible or >>not. > >Yes - this approach is certainly possible. >The AgentX protocol was deliberately designed to support this mode of >working, and the Net-SNMP code has been written to implement this >behaviour. > >However, it's only fair to say that this style of working probably >hasn't been used very widely, so won't have been tested to the same >extent as registering full OID subtrees. It's quite possible that >there are bugs in the code. You may need to proceed carefully, and >check exactly what has/hasn't worked at each stage. > > >dave _________________________________________________________________ Don't just search. Find. Check out the new MSN Search! http://search.msn.click-url.com/go/onm00200636ave/direct/01/ ------------------------------------------------------------------------- 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 Net-snmp-users@lists.sourceforge.net Please see the following page to unsubscribe or change other options: https://lists.sourceforge.net/lists/listinfo/net-snmp-users