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

Reply via email to