I’ve got an AgentX module that watches for specific multicast traffic, pulls a 
few bits out; and updates some counters accordingly. Consequentely I run the 
AgentX in non-blocking mode; as to (also) be able attend to the socket in 
parallel to handing SNMP requests. 

Code below works splendidly:

   my $agent = new NetSNMP::agent( 'AgentX' => 1, ...

   $agent->register("my_agent_name", “webweaving::domotics3739”, ...
 
    … set up some sockets & multicast subscription & put things in non-block.

   while(1) {
        ..decode any multicast packets and update counters; all reads NONBLOCK

        $agent->agent_check_and_process(1);     
   }
   $agent->shutdown();
 
However it obviously spins fast in this while(1){} loop; which is all the more 
a shame as both SNMP bulkwalks and multicast packets only come in every 100 
seconds or slower.

What is the proper way to put a select() or poll() or similar onto the agent 
(file descriptor) ? And are there any caveats ? Or is there some way to 
register a handler on a fd separately ?

Much appreciated,

Dw.



------------------------------------------------------------------------------
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to