TLDR: Programmatically...
1) How can I delete other 'unrelated' rows from a table when adding a row
to that same table.
2) How can I read/write data elsewhere?

==

Setup:
I have a table with details of 'alarms' (think alerts) - one per line -
with various data associated  with each alarm (id, source, other data.) in
the columns
I also have a set of scalars associated with this table under a group
that's a sibling to the table. Things like max number of alarms to
currently hold, and other meta data.

myExampleAlarmHistory
..+..myExampleAlarmHistoryMeta
..|....+ myExampleAlarmHistoryMetaCount - max to hold
..|....+ myExampleAlarmHistoryMetaMin - min index used
..|....+ myExampleAlarmHistoryMetaMax - max index used
..|....` myExampleAlarmHistoryMetaNext - next index to use (?)
..`..myExampleAlarmHistoryTable - table
.....`..myExampleAlarmHistoryEntry - entry for an alarm
.........+..myExampleAlarmHistoryIndex - index
.........+..myExampleAlarmHistoryId - data
.........+..myExampleAlarmHistoryRuleId - data

(Partial MIB for this available at https://pastebin.com/pVARXLsv)

Every time an alarm happens, another line of the table is added (I have
this bit working; both createAndGo and createAndWait - under the
presumption that I know which index to add it under)

However when that line is added (I'm presuming in
myExampleAlarmHistoryTable_commit() in
myExampleAlarmHistoryTable_data_set.c) what I'd like to do is

1) examine the scalar myExampleAlarmHistoryMetaCount to determine how many
rows I should currently be holding (to compare with
myExampleAlarmHistoryTable_container_size())
2) delete earlier rows if I currently hold too many
3) update the other scalars under myExampleAlarmHistoryMeta

The code I'm working with was produced using mib2c.mfd.conf against
myExampleAlarmHistoryTable, so it doesn't have direct sight of the sibling
myExampleAlarmHistoryMeta group or anything in it.

Is there any way of using the API to do these things, if so which functions
do I need?
Is there a canonical way of doing this? (My google-foo hasn't found any
source code doing similar - are there any specific examples around?)
Do I need to set up the code differently somehow?


Possibly pertinent info:
$ cat .mib2c-updaterc
UPDATE_OID=myExampleAlarmHistoryTable
UPDATE_CONF=mib2c.mfd.conf

$ grep eval defaults/table-MyExampleAlarmHistoryTable.m2d
@eval $m2c_context_reg = "netsnmp_data_list"@
@eval $m2c_data_allocate = 0@
@eval $m2c_data_cache = 0@
@eval $m2c_data_context = "generated"@ [generated|NAME]
@eval $m2c_data_init = 1@
@eval $m2c_data_transient = 2@
@eval $m2c_include_examples = 1@
@eval $m2c_irreversible_commit = 0@
@eval $m2c_table_access = "container-cached"@
@eval $m2c_table_dependencies = 1@
@eval $m2c_table_persistent = 1@
@eval $m2c_table_row_creation = 1@
@eval $m2c_table_settable = 1@
@eval $m2c_table_skip_mapping = -1@
@eval $m2c_table_sparse = 1@
@eval $mfd_generate_makefile = 0@
@eval $mfd_generate_subagent = 0@

$ 2>/dev/null yum info net-snmp-perl | egrep -i "version|release"
*Version     : 5.7.2*
Release     : 43.el7

-- 
PJH
_______________________________________________
Net-snmp-users mailing list
Net-snmp-users@lists.sourceforge.net
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to