Hi All,
I trying to do multiple instances using Table code generated from mib2c
tool.I m able to walk,bulkget,etc., but the problem is the agent is not
recognising the end of the instance.For example if i have created 2
instances using createEntry funtion,when i request for the third instance as
XXX.3,i shoould get Msg like "No such Instance available"
But i m error like
netsnmp_assert pss->s_snmp_errno != (-11) failed snmp_api.c:3124
snmp_build()
send response: Error building ASN.1 representation (build int size 0: s/b 4)
XXX.2
I m attaching what i ve done to generated code:
void
initialize_table_voltTable(void)
{
struct voltTable_entry *data=NULL;
........../* same as generated*/
..........
data = GetVoltData();
if(data==NULL)
return NULL;
}
struct voltTable_entry *GetVoltData()
{
struct voltTable_entry
*entry=NULL,*tmp=NULL,*tmp_ptr=NULL,*tmp3=NULL,*tmp4=NULL;
tmp = SNMP_MALLOC_TYPEDEF(struct voltTable_entry);
if (!tmp)
return NULL;
tmp_ptr = SNMP_MALLOC_TYPEDEF(struct voltTable_entry);
if (!tmp_ptr)
return NULL;
/
tmp = voltTable_createEntry(0);
tmp->valid =1;
strncpy(tmp->voltDescr,"Voltage",strlen("Voltage")+1);
tmp->voltReading = 18;//voltReading;
tmp->voltNominalReading =17;// voltNominalReading;
tmp->voltNonRecovLimitHigh =16 ;//voltNonRecovLimitHigh;
// tmp->next=NULL;
tmp_ptr = tmp->next;
tmp_ptr = voltTable_createEntry(1);
tmp_ptr->valid =1;
strncpy(tmp_ptr->voltDescr,"Voltage2",strlen("Voltage22222222222")+1);
tmp_ptr->voltReading = 10;//voltReading;
tmp_ptr->voltNominalReading =22;// voltNominalReading;
tmp_ptr->voltNonRecovLimitHigh =21 ;//voltNonRecovLimitHigh;
tmp_ptr->next=NULL;
}
netsnmp_variable_list *
voltTable_get_first_data_point(void **my_loop_context,
void **my_data_context,
netsnmp_variable_list * put_index_data,
netsnmp_iterator_info *mydata)
{
voltTable_head = GetVoltData();
if(voltTable_head!=NULL){
*my_loop_context = voltTable_head;
printf("\n\n index==========in gte_first %d",put_index_data->index);
return voltTable_get_next_data_point(my_loop_context,
my_data_context,
put_index_data, mydata);
}
else{
return NULL;
}
}
netsnmp_variable_list *
voltTable_get_next_data_point(void **my_loop_context,
void **my_data_context,
netsnmp_variable_list * put_index_data,
netsnmp_iterator_info *mydata)
{
struct voltTable_entry *entry =
(struct voltTable_entry *) *my_loop_context;
netsnmp_variable_list *idx = put_index_data;
if (entry)
{
// printf("\n----innnndex ==---%d",*put_index_data->val.integer);
if(*put_index_data->val.integer<2)
{
// printf("\n in set_value\n\n");
snmp_set_var_value(idx,(u_char *)&entry->voltIndex,
sizeof(entry->voltIndex));
idx = idx->next_variable;
*my_data_context = (void *)entry;
*my_loop_context = (void *)entry->next;
return put_index_data;
}
else{
printf("\n I M HERE in else \n\n");
return NULL;
}
}
else {
printf("\n I m here-------------in entry=NULL---\n\n");
// SET_SNMP_ERROR(SNMPERR_UNKNOWN_OBJID);
return NULL;
}
}
This is wht i ve done to the generated template....I tried for very long
time but i m not able to resolve.... Any help will be of great help....its
urgent
Thanks &Regards,
Pavithra S
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
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