Re :Re: Re :Re: Re :Re: Errors while accessing Table objects
"girish" <[email protected]>
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <1193044424.S.6499.30933.webmail15.rediffmail.com.old.1193048049.6883@webmail.rediffmail.com> |
The command which i\'m issuing is not at all hitting my subagent. In the subagent i\'ve this code for the object.voidinitialize_table_myTable(void){ static oid myTable_oid[] = { 1, 3, 6, 1, 4, 1, 872, 2, 5, 1, 1 }; size_t myTable_oid_len = OID_LENGTH(myTable_oid); netsnmp_handler_registration *reg; netsnmp_iterator_info *iinfo; netsnmp_table_registration_info *table_info; reg = netsnmp_create_handler_regist
ration(\"myTable\", &nb
sp; myTable_handler, myTable_oid, myTable_oid_len,  
; HANDLER_CAN_RWRITE); table_info = SNMP_MALLOC_TYPEDEF(netsnmp_
table_registration_info); netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,0); table_info->min_column = COLUMN_MYID; table_info->max_column = COLUMN_MY15; iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); iinfo->get_first_data_point = myTable_get_first_data_point; iinfo->get_next_data_point = myTable_get_next_data_point; iinfo->table_reginfo = table_info; netsnmp_register_table_iterator(reg, iinfo);} struct myTable_entry { /* * Index values */ long &nb
sp; myId; /* * Column values */ long &nb
sp; myId; char UserLabel[NNN]; int valid; struct myTable_entry *next;};struct myTable_entry *myTable_head;struct myTable_entry *myTable_createEntry(long myId){ struct myTable_entry *entry; entry = SNMP_MALLOC_TYPEDEF(struct myTable_entry); if (!entry) return NULL; entry->myId = myId; entry->next = myTable_head; myTable_head = entry; return entry;}voidmyTable_removeEntry(struct myTable_entry *entry){ - - &n
bsp; - - }netsnmp_variable_list *MYTable_get_first_data_point(void **my_loop_context, &nbs
p; void **my_data_context, netsnmp_variable_list * put_index_data, netsnmp_iterator_info *mydata){ *my_loop_context = MYTable_head; return MYTable_get_next_data_point(my_loop_context, &nbs
p; &n
bsp; my_data_context, put_index_data, mydata);}int myTable_handler(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, &nb
sp; netsnmp_request_info *requests){ { netsnmp_request_info *request; netsnmp_table_request_in
fo *table_info; struct myTable_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 myTable_entry *) netsnmp_extract_iterator_context(request); table_info = netsnmp_extract_table_info(request);&n
bsp; switch (table_info->colnum) { case COLUMN_MYID: &nb
sp; snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER, table_entry->myId); break; case COLUMN_USERLABEL: snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,  
; &nb
sp; (u_char *) table_entry-> UserLabel, table_entry->UserLabel_len); break;} case MODE_SET_RESERVE1: for (request = requests; request; request = request->next) {
table_entry = (struct myTable_entry *)
netsnmp_extract_iterator_context(request); table_info = netsnmp_extract_table_info(request); switch (table_info->colnum) { case COLUMN_USERLABEL: /* * or possibly \'netsnmp_check_vb_type_and_max_size\' */ ret = &nb
sp; netsnmp_check_vb_type_and_size(request->requestvb, &
nbsp; ASN_OCTET_STR, NNN); if (ret != SNMP_ERR_NOERROR) { netsnmp_set_request_error(reqinfo, request, ret); return SNMP_ERR_NOERROR;
} break;} case MODE_SET_RESERVE2: break; &
nbsp; case MODE_SET_FREE: break; case MODE_SET_ACTION: for (request = requests; request; request = request->next) { table_entry = (struct myTable_entry *) netsnmp_extract_iterator_context(request); table_info = netsnmp_extract_table_info(request); switch (table_info->colnum) { case COLUMN_USERLABEL: &
nbsp; memcpy(table_entry->old_UserLabel, &nb
sp; table_entry->UserLabel, sizeof(table_entry->UserLabel)); table_entry->old_UserLabel_len = table_entry->UserLabel_len; memset(table_entry->UserLabel, 0, sizeof(table_entry->UserLabel)); 
; memcpy(table_entry->UserLabel,  
; request->requestvb->val.string, request->requestvb->val_len); table_entry->UserLabel_len = request->requestvb->val_len; break;} case MODE_SET_UNDO: for (request = requests; request; request = request->next) { &
nbsp; table_entry = (struct myTable_entry *) netsnmp_extra
ct_iterator_context(request); table_info = netsnmp_extract_table_info(request); switch (table_info->colnum) { case COLUMN_USERLABEL: memcpy(table_entry->UserLabel, table_entry->old_UserLabel, sizeof(table_entry->UserLabel));  
; memset(table_entry->old_UserLabel, 0, &nbs
p; sizeof(table_entry->UserLabel)); table_entry->UserLabel_len = table_entry->old_UserLabel_len; break;}case MODE_SET_COMMIT: break; } return SNMP_ERR_NOERROR;}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
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