On Wed, 30 May 2007 13:07:28 -0700 (PDT) Need wrote:
NH> 1) Table1 has the "ocStbHostAVInterfaceIndex" field which I believe represents the row index in the table. Actually. I believe this index field is used as the row index value generated within NetSNMP by doing the following:
NH> a) calling the "se_find_value_in_slist()" routine (from within the "container_load" procedure) to obtain a unique index
NH> b) calling the "ocStbHostAVInterfaceTable_allocate_rowreq_ctx" routine to allocate new storage row space
NH> c) storing the "ocStbHostAVInterfaceIndex" value into the row by calling the following:
NH> ocStbHostAVInterfaceTable_indexes_set(rowreq_ctx, ocStbHostAVInterfaceIndex)
NH> Is my interpretation correct? Am I using the "ocStbHostAVInterfaceIndex" index field as the row number correctly?

looks reasonable to me.

NH> 2) You will notice Table2 does not have a specific "index" field defined, however the MIB file indicates Table2 is related to the "ocStbHostAVInterfaceIndex" field (which is defined from Table1). I have recently learned from this forum (thanks David) this means Table2 is simply an extension of Table1 and that Table1 is considered to be a sparse table. The MIB file states that when Table1's "ocStbHostAVInterfaceType" value indicates "1394", then Table2 data will exist, otherwise Table2 data will not exist.

Actually, that terminology isn't quite correct. I don't think either table is
sparse, but there is a sparse relationship between the tables. (See Davi
Perkin's paper on inter-table indexing:

NH> I am not sure how to populate Table2 data within the MfD framework. Since Table2 does not have a specific "index" field defined, then I am not sure how to generate rows for Table2 to store the data correctly.

I responded to this in another of your threads, before I saw this thread... See
my response there..

NH> I am also pretty sure I can not expand the data_context structure definition of Table1 to include the data fields defined in Table2, since this is not how the MIB file defined the Tables ...... they are defined to be separate tables.

It's just code, you can do whatever you want! In fact, this is what the
ifTable/ifXTable code does... the ifTable structures have been expanded to
include the data for ifXTable entries. however, those tables have a 1-1
relationship, not a sparse relationship. But if you don't mind wasting the
space in each row with all the fields for each table that augments table 1, you
can simply put all the field definitions in table 1's data structure. If the
fields are mutually exclusive, you could probably even use a union to reduce
wasted space in the data context. Alternatively, you could just have the row
indexes populated during the load, and use the row_prep function to fetch the
row data as needed.

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.
Net-snmp-coders mailing list