Hi again, Should I have posted this on the net-snmp-users list instead? I pondered that originally but thought that the extra code locus information (in ifTable_data_access.c) in the original note justified its inclusion here.
I'm still looking for a way to use the override mechanism for setting specific ifXEntry trap enable values and to have this work for actual generation of linkUp/linkDown traps when enabled. Is there anyone reading this list that might be able to help me with this? I forgot to mention originally that I'm using NetSNMP v5.7.3 on Linux. Thanks, -David On Wednesday, August 07, 2019 11:15 AM, David Hauck <dav...@netacquire.com> wrote: > Hi, > > I'm trying to understand the difference between using an "override" for > setting the IF- > MIB::ifLinkUpDownTrapEnable.<x> object vs. a traditional set. I find that > when these columns are set > for an ifXEntry via the override mechanism in the agent's configuration file > I do not ever see the > corresponding effect (wrt linkUp/linkDown traps being issued): > > override -rw IF-MIB::ifLinkUpDownTrapEnable.4 integer 1 > > However, if I remove the override and instead set the MIB object via a > traditional set the > corresponding effect (linkUp/linkDown traps being issued) does indeed occur: > > snmpset -v2c -c private -m ALL localhost IF-MIB::ifLinkUpDownTrapEnable.4 i 1 > > Indeed, when I step through the agent in the debugger I see the key > conditional where this behaviour > changes. This is in _check_interface_entry_for_updates() in > ifTable_data_access.c: > > ... > if (oper_changed) { > rowreq_ctx->data.ifLastChange = netsnmp_get_agent_uptime(); > #ifdef USING_IF_MIB_IFXTABLE_IFXTABLE_MODULE if > (rowreq_ctx->data.ifLinkUpDownTrapEnable == 1) { > if (rowreq_ctx->data.ifOperStatus == IFOPERSTATUS_UP) { ... > The 'data.ifLinkUpDownTrapEnable' data member is always 0 in the override > case, however, it is > always the correct value (1 in the 'snmpset' case above) when 'snmpset' is > used. Oddly, in the override > case I do see an associated get ('snmpget') return the proper override > (enable) value: > > snmpget -v2c -c private -m ALL localhost IF-MIB::ifLinkUpDownTrapEnable.4 > IF-MIB::ifLinkUpDownTrapEnable.4 = INTEGER: enabled(1) > > Moreover, whenever the override is used (note the use of the '-rw' token) I > do not see any of the > normal table access methods in ifXTable.c get called (i.e., no breaks in > ifLinkUpDownTrapEnable_{get|set}). Why is this? And why does this have an > effect on the ultimately > relevant conditional in _check_interface_entry_for_updates()? > > My preference is to use the override mechanism so that I can persist (and > ultimately prevent sets by > removing the '-rw' token) the enable/disable state. > > Thanks for any insight anyone might be able to provide. > > Regards, > -David > > _______________________________________________ Net-snmp-coders mailing list Net-snmp-coders@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/net-snmp-coders _______________________________________________ Net-snmp-coders mailing list Net-snmp-coders@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/net-snmp-coders