Search code examples
net-snmpsnmptrapd

send_v3trap context value


I am developing shared library and subagent for net-snmp. I need to send v3 traps for specific hardware events. I would like to know what value need to be filled in the context value of send_v3trap API.

void send_v3trap(netsnmp_variable_list * vars,const char * context )    

Is this context value, same as user defined engine id ? i.e., the one which needs to be configured in snmptrapd.conf as below ?

createUser -e ENGINEID myuser SHA "my authentication pass" AES "my encryption pass"

More on configuring in this link

There is an example source code available for sending v2traps

By looking at the net-snmp source code, send_v3trap calls internally send_v2trap and eventually,

/* A context name was provided, so copy it and its length to the v2 pdu
     * template. */
if (context != NULL)
    {
        template_v2pdu->contextName    = strdup(context);
        template_v2pdu->contextNameLen = strlen(context);
    }

Solution

  • Answering my own question.

    "context" value can be filled with

    1. value returned by "snmpv3_get_engineID"
    2. NULL

    As long as, configurations are proper in terms of v3 i.e., trapsess -v3 specified in the host and on the target, engineid of net-snmp is specified, then everything works fine.

    Only unclear part still is, if someone is able to send v3 traps without specifying "context", in which scenario would it be useful really !