Ok, I changed the analog table's interface handler back to how it use to be
(ie: no MFD_SKIP logic) and added the logic you recommended to return MFD_SKIP
to the analog table's "get" handler for the ProtectionStatus field.
Seems like we are trying to verify whether the field (column data) is truely
related to the "Analog Table" or not by determining whether the
ProtectionStatus field is 0. Keep in mind, a ProtectionStatus field value of
"0 - copyProtectionOff" is a "valid" field value when the row is related to the
Analog Table. As a result, I do not believe if I can simply check for a "0 -
copyProtectionOff" value to determine whether a MFD_SKIP value should be
returned. Perhaps you are just having me add this logic to acquire some more
traces only? I just wanted to mention this to make sure you understand this
point.
Also please remember the Analog Table (ie: Table2) plus multiple other tables
(Table3,4,5) extend the main AVInterfaceTable (ie:Table1). The data_context of
Table1 is defined to include a "union" of the Table2,3,4,5 structures. As a
result, I am not sure I would be able to check for a value of "0 -
copyProtectionOff" if the row is "not" related to the Analog Table since the
memory might be populated with some other value from Table3,4 or 5 ..... since
it uses a union.
For the trace, I added a couple of "printf" statements which you will see in
BOLD:
"SKIP ROW" = located in row_prep() to indicate which row was skipped with
MFD_SKIP
"SKIP_STATUS" = located in ProtectionStatus_get() to indicate the in
ProtectionStatus was found to be "0" and that a MFD_SKIP was returned.
Now, here is the trace output you requested:
[net-snmp]# /export/home/myname/snmp/usr/local/bin/snmpgetnext -v 1 -c
mycommunity_ro localhost ocStbHostAnalogVideoProtectionStatus.2
handler:calling: main handler bulk_to_next
handler:calling: calling handler bulk_to_next for mode GETNEXT
handler:returned: handler bulk_to_next returned 0
handler:calling: calling handler table for mode GETNEXT
handler:calling: calling handler cache_handler for mode GETNEXT
handler:returned: handler cache_handler returned 0
handler:calling: calling handler table_container for mode GETNEXT
table_container: Mode GETNEXT, Got request:
table_container: data_lookup
oid:OC-STB-HOST-MIB::ocStbHostAnalogVideoProtectionStatus.2
handler:calling: calling handler row_merge for mode GET
handler:calling: calling handler baby_steps for mode GET
handler:calling: calling handler baby_steps_mux for mode (null)
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_pre_request:
called
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoTable_pre_request: called
handler:returned: handler baby_steps_mux returned 0
handler:calling: calling handler baby_steps_mux for mode (null)
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_object_lookup:
called
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoTable_row_prep: called
SKIP ROW ocStbHostAnalogVideoTable_row_prep() row=3
handler:returned: handler baby_steps_mux returned 0
handler:calling: calling handler baby_steps_mux for mode GET
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_get_values:
called
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_get_column:
called for 1
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoProtectionStatus_get:
called
SKIP STATUS row=3
handler:returned: handler baby_steps_mux returned 0
handler:calling: calling handler baby_steps_mux for mode (null)
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_post_request:
called
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoTable_post_request: called
handler:returned: handler baby_steps_mux returned 0
handler:returned: handler baby_steps returned 0
handler:returned: handler row_merge returned 0
handler:returned: handler table_container returned 0
sparse: retry for NOSUCHINSTANCE
handler:returned: handler table returned 0
handler:calling: main handler bulk_to_next
handler:calling: calling handler bulk_to_next for mode GETNEXT
handler:returned: handler bulk_to_next returned 0
handler:calling: calling handler table for mode GETNEXT
handler:calling: calling handler cache_handler for mode GETNEXT
handler:returned: handler cache_handler returned 0
handler:calling: calling handler table_container for mode GETNEXT
table_container: Mode GETNEXT, Got request:
table_container: data_lookup
oid:OC-STB-HOST-MIB::ocStbHostAnalogVideoProtectionStatus.3
handler:calling: calling handler row_merge for mode GET
handler:calling: calling handler baby_steps for mode GET
handler:calling: calling handler baby_steps_mux for mode (null)
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_pre_request:
called
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoTable_pre_request: called
handler:returned: handler baby_steps_mux returned 0
handler:calling: calling handler baby_steps_mux for mode (null)
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_object_lookup:
called
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoTable_row_prep: called
UPDATE ROW ocStbHostAnalogVideoTable_row_prep() row=4
handler:returned: handler baby_steps_mux returned 0
handler:calling: calling handler baby_steps_mux for mode GET
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_get_values:
called
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_get_column:
called for 1
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoProtectionStatus_get:
called
handler:returned: handler baby_steps_mux returned 0
handler:calling: calling handler baby_steps_mux for mode (null)
internal:ocStbHostAnalogVideoTable:_mfd_ocStbHostAnalogVideoTable_post_request:
called
verbose:ocStbHostAnalogVideoTable:ocStbHostAnalogVideoTable_post_request: called
handler:returned: handler baby_steps_mux returned 0
handler:returned: handler baby_steps returned 0
handler:returned: handler row_merge returned 0
handler:returned: handler table_container returned 0
handler:returned: handler table returned 0
OC-STB-HOST-MIB::ocStbHostAnalogVideoProtectionStatus.4 = INTEGER:
fourLineSplitBurst(3)
Robert Story <[EMAIL PROTECTED]> wrote: On Tue, 19 Jun 2007 10:26:06 -0700
(PDT) Need wrote:
NH> OC-STB-HOST-MIB::ocStbHostAnalogVideoProtectionStatus.3 = INTEGER:
copyProtectionOff(0)
NH> Here is the "snmpgetnext" output you requested:
Hmm.. ok.. now lets try something a little bit different... comment out the
code we added to the analog table's interface handler for dealing with
MFD_SKIP, and in the ocStbHostAnalogVideoProtectionStatus get function, add
code along the lines of
if (status == 0) /* copyProtectionOff */
return MFD_SKIP;
Then do the getnext again, and send the results again. (returning skip from
each of the get routines should work, but it's obviously not a very efficient
option. I'm hoping the debug output will reveal an interesting difference.)
---------------------------------
The fish are biting.
Get more visitors on your site using Yahoo! Search Marketing.-------------------------------------------------------------------------
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-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders