RE: Table's String index does not work
"Naama Bar Menachem" <[email protected]>
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <[email protected]> |
Hi all Correction: only 2 issues. 1. In get-next 2. In walk: GET function works fine: ~ # ./data/net/naamab/snmpget -m ALL -M /data/sw/snmp/snmp_mib_lnk/ -v 2c -c private 127.0.0.1 1.3.6.1.4.1.37576.4.1.4.1.1.3.\"committed-switch\" NOVELSAT-DEMODULATOR-MIB::nsDemodConfigDiseqcNumDataBytes."committed-swi tch" = Gauge32: 1 GET-NEXT also works good but CRASHES at the end: ./data/net/naamab/snmpgetnext -m ALL -M /data/sw/snmp/snmp_mib_lnk/ -v 2c -c private 127.0.0.1 1.3.6.1.4.1.37576.4.1.4.1.1.3.\"committed-switch\" NOVELSAT-DEMODULATOR-MIB::nsDemodConfigDiseqcNumDataBytes."non-committed -sw" = Gauge32: 1 ==> next call (any call) is exit with time out! Debug prints show that the handle function "nsDemodConfigDiseqcTable_handler" finishes successfully, no crash while in it... (I see a print at the last row of the function, before - "return SNMP_ERR_NOERROR;" Where could be the problem?? However WALK fails due to TimeOut: ./data/net/naamab/snmpwalk -m ALL -M /data/sw/snmp/snmp_mib_lnk/ -v 2c -c private 127.0.0.1 1.3.6.1.4.1.37576.4.1.4.1.1 Timeout: No Response from 127.0.0.1 Thank you. From: Naama Bar Menachem Sent: Thursday, August 09, 2012 11:03 AM To: [email protected] Cc: Naama Bar Menachem Subject: Table's String index does not work Hi all * Net-snmp version: 5.5 * Scenario: Using snmpB I perform "walk" on the table. I have a table with string type index (see below). On the get-next-entry function (full code is below as well) retrieving the index fails, and "val.string" is empty, val_len=0 but type is ASN_OCTET_STR. Also attached the my log file with debug prints. I also tried to simply get one parameter in specific index: ~ # ./data/net/naamab/snmpget -m ALL -M /data/sw/snmp/snmp_mib_lnk/ -v 2c -c private 127.0.0.1 1.3.6.1.4.1.37576.4.1.4.1.1.3.3."committed-switch" 1.3.6.1.4.1.37576.4.1.4.1.1.3.3.committed-switch: Unknown Object Identifier (Index out of range: committed-switch (nsDemodConfigDiseqcName)) ~ # ./data/net/naamab/snmpget -m ALL -M /data/sw/snmp/snmp_mib_lnk/ -v 2c -c private 127.0.0.1 1.3.6.1.4.1.37576.4.1.4.1.1.3."committed-switch" 1.3.6.1.4.1.37576.4.1.4.1.1.3.committed-switch: Unknown Object Identifier (Index out of range: committed-switch (nsDemodConfigDiseqcName)) ~ # ./data/net/naamab/snmpget -m ALL -M /data/sw/snmp/snmp_mib_lnk/ -v 2c -c private 127.0.0.1 1.3.6.1.4.1.37576.4.1.4.1.1.3.3.6."committed-switch" 1.3.6.1.4.1.37576.4.1.4.1.1.3.3.6.committed-switch: Unknown Object Identifier (Index out of range: committed-switch (nsDemodConfigDiseqcName)) ================================================ === MIB ================================================ nsDemodConfigDiseqc OBJECT-IDENTITY STATUS current DESCRIPTION "Demodulator MIB branch that holds all Demodulator DiSEqC parameters." ::= { nsDemodConfig 4 } nsDemodConfigDiseqcTable OBJECT-TYPE SYNTAX SEQUENCE OF DemodConfigDiseqcEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of Diseqc parameters" ::= { nsDemodConfigDiseqc 1 } nsDemodConfigDiseqcEntry OBJECT-TYPE SYNTAX DemodConfigDiseqcEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Conceptual row in table for each DiSEqC." INDEX { nsDemodConfigDiseqcName } ::= { nsDemodConfigDiseqcTable 1 } DemodConfigDiseqcEntry ::= SEQUENCE { nsDemodConfigDiseqcName DisplayString, nsDemodConfigDiseqcHeaderBytes Unsigned64, nsDemodConfigDiseqcNumDataBytes Unsigned32, nsDemodConfigDiseqcToneBurstMode INTEGER, nsDemodConfigDiseqcNotifyRowStatus RowStatus } nsDemodConfigDiseqcName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS not-accessible STATUS current DESCRIPTION "This parameter holds DiSEqC command's name." ::= { nsDemodConfigDiseqcEntry 1 } nsDemodConfigDiseqcHeaderBytes OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-create STATUS current DESCRIPTION "This parameter holds DiSEqC command's header bytes." ::= { nsDemodConfigDiseqcEntry 2 } nsDemodConfigDiseqcNumDataBytes OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-create STATUS current DESCRIPTION "This parameter holds DiSEqC command's number of data bytes." ::= { nsDemodConfigDiseqcEntry 3 } nsDemodConfigDiseqcToneBurstMode OBJECT-TYPE SYNTAX INTEGER { auto (0), unmodulated (1), modulated (2), none (3), notApplicable (255) } MAX-ACCESS read-create STATUS current DESCRIPTION "This parameter holds DiSEqC command's tone burst mode." ::= { nsDemodConfigDiseqcEntry 4 } nsDemodConfigDiseqcNotifyRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "Used to create new rows or delete in the table. Note that all rows are active(1) at all times, since default values are given to empty parameters. Value createAndGo(4) is used when all row parameters are inserted at once, while createAndWait(5) is used to create row with default values. Value destroy(6) is used to remove a row" ::= { nsDemodConfigDiseqcEntry 5 } ================================================ ================================================ === get next function ================================================ static struct nsDemodConfigDiseqcTable_entry * nsDemodConfigDiseqcTable_get_next_entry(netsnmp_handler_registration *reginfo, netsnmp_request_info *request, int column, netsnmp_variable_list * indexes) { struct nsDemodConfigDiseqcTable_entry *row = NULL; oid build_space[MAX_OID_LEN]; size_t build_space_len = 0; size_t index_oid_len = 0; netsnmp_variable_list *idx = indexes; ns_db_diseqc_core_tbl_record_t *tbl_record_pointer; char *key_pointer; int ret=0; bool is_writable; bool is_visible; NS_SYSLOG_SNMP(LOG_ALERT, "=======================================nbm: get next entry-1"); tbl_record_pointer = (ns_db_diseqc_core_tbl_record_t *) ns_ipcc_mem_alloc(sizeof(ns_db_diseqc_core_tbl_record_t)); key_pointer = (uint8_t *) ns_ipcc_mem_alloc(sizeof(char)*NS_TBL_FLD_MAX_LEN); if ((!key_pointer) || (!tbl_record_pointer)) { ns_ipcc_mem_free(); return NULL; } NS_SYSLOG_SNMP(LOG_ALERT, "====nbm: 2. index-type=%d, oct-str=%d, len=%d, str=%s, int=%d, c0=%c, c1=%c, c2=%c, c0=%d, c1=%d, c2=%d", idx->type, ASN_OCTET_STR, idx->val_len, idx->val.string, idx->val.integer, (idx->val.string)[0], (idx->val.string)[1], (idx->val.string)[2], (idx->val.string)[0], (idx->val.string)[1], (idx->val.string)[2]); strncpy(key_pointer, idx->val.string, NS_TBL_FLD_MAX_LEN); NS_SYSLOG_SNMP(LOG_ALERT, "====nbm: 3, key_pointer=%s", key_pointer); /* * XXX - Use the 'indexes' parameter to identify the * next row in the table.... */ if (!ns_db_tbl_get_next_record(NS_DB_TBL_ID_DISEQC_CORE, key_pointer, tbl_record_pointer)) { NS_SYSLOG_SNMP(LOG_ALERT, "====nbm: 4"); strncpy(DemodConfigDiseqc_entry.nsDemodConfigDiseqcName, tbl_record_pointer->name, NS_TBL_FLD_MAX_LEN); DemodConfigDiseqc_entry.nsDemodConfigDiseqcName_len = strlen(tbl_record_pointer->name); DemodConfigDiseqc_entry.nsDemodConfigDiseqcHeaderBytes = tbl_record_pointer->header; DemodConfigDiseqc_entry.nsDemodConfigDiseqcNumDataBytes = tbl_record_pointer->nr_data_bytes; DemodConfigDiseqc_entry.nsDemodConfigDiseqcToneBurstMode = tbl_record_pointer->tone_burst; DemodConfigDiseqc_entry.nsDemodConfigDiseqcNotifyRowStatus = 1; NS_SYSLOG_SNMP(LOG_ALERT, "====nbm: 5, header=0x%lx, num=%d, tbm=%d", DemodConfigDiseqc_entry.nsDemodConfigDiseqcHeaderBytes, DemodConfigDiseqc_entry.nsDemodConfigDiseqcNumDataBytes, DemodConfigDiseqc_entry.nsDemodConfigDiseqcToneBurstMode); /* get row */ row = &DemodConfigDiseqc_entry; /* * XXX .... update the 'indexes' parameter with the * appropriate index values ... */ NS_SYSLOG_SNMP(LOG_ALERT, "====nbm: 6, key_pointer=%s", key_pointer); strncpy(idx->val.string, key_pointer, NS_TBL_FLD_MAX_LEN); NS_SYSLOG_SNMP(LOG_ALERT, "====nbm: 7, idx->val.string=%s", idx->val.string); /* * ... and update the requested OID to match this instance */ memcpy(build_space, reginfo->rootoid, /* registered oid */ reginfo->rootoid_len * sizeof(oid)); build_space_len = reginfo->rootoid_len; build_space[build_space_len++] = 1; /* entry */ build_space[build_space_len++] = column; /* column */ build_oid_noalloc(build_space + build_space_len, MAX_OID_LEN - build_space_len, &index_oid_len, NULL, 0, indexes); snmp_set_var_objid(request->requestvb, build_space, build_space_len + index_oid_len); } /* * Finally, return the data structure for this row */ ns_ipcc_mem_free(); return row; } -----------------------log file prints:--------------------- Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[196]> =======================================nbm: get next entry-1 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[205]> ====nbm: 2. index-type=4, oct-str=4, len=0, str=, int=538944032, c0= Jan 20 16:05:02 (none) user.notice , c1= Jan 20 16:05:02 (none) user.notice , c2= Jan 20 16:05:02 (none) user.notice , c0=0, c1=0, c2=0 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[208]> ====nbm: 3, key_pointer= Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[214]> ====nbm: 4 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[222]> ====nbm: 5, header=0xe01038, num=1, tbm=0 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[231]> ====nbm: 6, key_pointer=committed-switch Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[233]> ====nbm: 7, idx->val.string=committed-switch Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[196]> =======================================nbm: get next entry-1 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[205]> ====nbm: 2. index-type=4, oct-str=4, len=0, str=, int=538944032, c0= Jan 20 16:05:02 (none) user.notice , c1= Jan 20 16:05:02 (none) user.notice , c2= Jan 20 16:05:02 (none) user.notice , c0=0, c1=0, c2=0 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[208]> ====nbm: 3, key_pointer= Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[214]> ====nbm: 4 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[222]> ====nbm: 5, header=0xe01038, num=1, tbm=0 Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[231]> ====nbm: 6, key_pointer=committed-switch Jan 20 16:05:02 (none) user.alert snmpd: <SNMP:nsDemodConfigDiseqcTable_get_next_entry[233]> ====nbm: 7, idx->val.string=committed-switch Best Regards, Naama Bar Menachem SW Eng. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ 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
image001.jpg
(image/jpeg, 13.7 KB) - not displayed