|
From: Robert S. <rs...@fr...> - 2018-07-12 11:13:48
|
On Fri, 1 Jun 2018 14:19:30 +0100 David wrote: DA> My first goal is just to process setting a simple scalar value, DA> but eventually I will want to look at row creation so I'd like DA> to understand the bigger picture. DA> DA> The example handler DA> <http://search.cpan.org/~hardaker/NetSNMP-agent-5.0401/agent.pm#Sub-agent_example> DA> shows DA> process a SET_ACTION request, but it doesn't indicate what if, DA> anything I am required to do. DA> DA> } elsif ($request_info->getMode() == MODE_SET_ACTION) { DA> # ... (or use the value) DA> $value = $request->getValue(); DA> } DA> DA> First, processing relating to the value. I guess that I do DA> whatever the value means (eg. adjust a setting in the system DA> that the MIB represents) and perhaps adjust any cached values DA> in my agent. I'm not clear whether I also need to call DA> request->setValue() or whether a subsequent GET just picks up DA> the new state. No need to call request->setValue since you can't change the value returned in the request and your internal value should have just been set. DA> Then the other aspect is to return something to my caller. DA> Studying the C code examples it looks like maybe all I need to DA> do is call request->setError() if there's a problem, and DA> possibly setDelegated() if there is deferred work. Seem like I DA> then see the remaining SET stages occur until we reach Commit. Yep. This simple example doesn't cover all of set processing. There is a state diagram here: http://www.net-snmp.org/tutorial/tutorial-5/toolkit/mib_module/set-actions.jpg And a more complete description of the various states here: http://net-snmp.sourceforge.net/wiki/index.php/Agent_Modes#Set_processing Robert |