The SNMP collector is devided into 4 modules: main.c: Basic setup, command line parsing, usage and setup of signal handling. conf.c: Reads the configuration file and sets up the structures with the SNMP variables. collect.c: The collector itself. output.c: Formatting and printing of the output file. The SNMP variables can be in one of 3 states depending on the queue they are currently stored in: WAIT (w_queue): variable will be requested as soon as possible. SENT : SNMP GET is sent to agent. We wait for a reply or timeout. IDLE (i_queue): No current action required on SNMP variable. The following state changes are possible: init -> WAIT : initially, all SNMP variables need to be requested. Set up by conf.c WAIT -> SENT : up to "max_send" SNMP GET requests with up to "max_pdu" variables are sent to agents. SENT -> IDLE : A SNMP Response was received. If necessary, the variable is written to output file (output.c). SENT -> WAIT : the SNMP GET request timed out and "max_retry" not reached. SENT -> IDLE : the SNMP GET request timed out and we wait for "deferred" time for next retry. IDLE -> WAIT : either "deferred" or "interval" expired. IDLE -> WAIT : "interval" is 0 and reconfiguration signal received. Done by conf.c