Hi,
I am using 'mib2c.iterate.conf' to generate code. In (object)table_ handler,
'requests' is passed to 'MODE_GET' using 'table_entry' pointer.
Can I get requested index value without using 'struct
sampleGeneralTable_entry'. Suppose OID used as
"1,3,6,1,4,1,2088,15,2,1,1,6,1,1,1.1" and instance of table index is "55". How
can I access "55" from whole OID list?
Here is the snippet of code:-
int
sampleGeneralTable_handler(
netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests) {
netsnmp_request_info *request;
netsnmp_table_request_info *table_info;
struct sampleGeneralTable_entry *table_entry;
switch (reqinfo->mode) {
/*
* Read-support (also covers GetNext requests)
*/
case MODE_GET:
for (request=requests; request; request=request->next) {
table_entry = (struct sampleGeneralTable_entry *)
netsnmp_extract_iterator_context(request);
table_info = netsnmp_extract_table_info( request);
int retVal = -1;
switch (table_info->colnum) {
case COLUMN_SAMPLENUMBER:
/*
if ( !table_entry ) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
} */
//Don't want to use 'table_entry', so commented.
// Here, I would like to pass index value, directly coming
request,
// Could you suggest me the parameter in request to get index
value ??
retVal = getDataValueIndex( requested_index) // external api to get data
value for requested index.
snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER, retVal);
Here, I modified to get_first_data and get_next_data. Does the following draft
code looks alright???
netsnmp_variable_list *
sampleGeneralTable_get_first_data_point(void **my_loop_context,
void **my_data_context,
netsnmp_variable_list *put_index_data,
netsnmp_iterator_info *mydata)
{
dbi_result result;
char tmpBuff[100] = {'\0'};
result = (dbi_result)SelectQuery(tmpBuff); // external api
*my_loop_context = result; // instead of 'sampleGeneralTable_head'
pointer, I used query result
return sampleGeneralTable_get_next_data_point(my_loop_context,
my_data_context,
put_index_data, mydata );
}
netsnmp_variable_list *
sampleGeneralTable_get_next_data_point(void **my_loop_context,
void **my_data_context,
netsnmp_variable_list *put_index_data,
netsnmp_iterator_info *mydata)
{
// struct sampleGeneralTable_entry *entry = (struct sampleGeneralTable_entry
*)*my_loop_context;
// Commented not using, link list
dbi_result result = (dbi_result)*my_loop_context;
netsnmp_variable_list *idx = put_index_data;
if(dbi_result_next_row(result))
{
retVal = getData(result);
}
snmp_set_var_typed_integer( idx, ASN_INTEGER, retVal);
idx = idx->next_variable;
*my_data_context = (void *)result; // Modified
*my_loop_context = (void *)dbi_result_next_row(result); //Modified
return put_index_data;
} else {
return NULL;
}
}
Thanks,
Rajnish
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders