Send traps or informs from a net-snmp mib module
#include <net-snmp/agent/agent_trap.h>
void send_easy_trap(int trap, int specific);
void send_trap_vars(int trap, int specific, struct variable_list *vars);
void send_v2trap(struct variable_list *vars);
These three routines may be used to send traps from a MIB module within the Net-SNMP agent (including an AgentX subagent).
send_easy_trap() sends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of configured trap destinations (or "sinks"), using the provided values for the generic trap type, and specific trap value.
send_trap_vars() is similar, but appends the supplied list of variable bindings to the traps that are sent.
send_v2trap() uses the supplied list of variable bindings to form an SNMPv2 trap, which is sent to SNMPv2-capable sinks on the configured list. An equivalent INFORM is sent to the configuredq list of inform sinks. Sinks that can only handle SNMPv1 traps are skipped.
The various "send_trap()" calls allow you to specify traps in different formats. And the various "trapsink" directives allow you to specify destinations to receive different formats. But *all* traps are sent to *all* destinations, regardless of how they were specified.
I.e. it's ___ trapsink / send_easy_trap \___ [ Trap ] ____ trap2sink ___ [ Generator ] send_v2trap / [ ] ----- informsink \____ trapsess *Not* send_easy_trap -------------------> trapsink send_v2trap -------------------> trap2sink ???? -------------------> informsink ???? -------------------> trapsess
These routines are used to send the traps immediately they are called. Invoking them at the appropriate time is left to the MIB module programmer.
snmpd.conf(5), snmptrapd(8)