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

Reply via email to