Problem sending traps

"Mostafa Kassem" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <DM6PR18MB29545AADA9D96D7F01FE309AC8640@DM6PR18MB2954.namprd18.prod.outlook.com>
Greetings,
Our trap sink parameters are modified per 2 MIB entries, one for the IP address and one for the port.

We would like to set the trap sink programmatically on powerup and when we receive an snmp request.
On powerup and every time we receive a request to change the trap sink IP address or port, we parse the snmpd.conf file to get the username, authentication and privacy protocols and passwords.  Our snmpd.conf file looks like this:

# setup authorization
CreateUser myUserName SHA "myAuthenticationPassword" AES " myPrivacyPassword "
rwuser myUserName authPriv

# include Agentx setup
master agentx
authtrapenable  1

And our code to set the trap session on power up, is written in C++ and is as follows:

bool TrapSession::createSnmpV3TrapSession()
{
    std::stringstream connectingString;
    netsnmp_session session, *sesp;
    memset(&session, 0, sizeof(netsnmp_session));
    snmp_sess_init (&session);   // Set up defaults

     session.version = SNMP_VERSION_3;

    // Peer name
    std::stringstream connectionString;
    connectionString << "udp6:[" << ipV6AddressAsString << "]:" << sinkPort;
    session.peername = strdup(connectionString.str().c_str());

    // set the SNMPV3 user name
    session.securityName = strdup( userName.c_str());
    session.securityNameLen = strlen(userName.c_str());

    // Security
    session.securityLevel = SNMP_SEC_LEVEL_AUTHPRIV;
    session.securityModel = SNMP_SEC_MODEL_USM;

    // Authentication Protocol
    session.securityAuthKeyLen = USM_AUTH_KU_LEN;
    session.securityAuthProto = snmp_duplicate_objid(usmHMACSHA1AuthProtocol, USM_AUTH_PROTO_SHA_LEN);
    session.securityAuthProtoLen = USM_AUTH_PROTO_SHA_LEN;

    if (generate_Ku(session.securityAuthProto,
                  session.securityAuthProtoLen,
                  (const uint8_t *) authenticationPassword.c_str(),
                  authenticationPassword.length(),
                  session.securityAuthKey,
                  &session.securityAuthKeyLen) != SNMPERR_SUCCESS)
    {
        LOG_ERROR("Error generating authentication KU for authentication password: " << authenticationPassword);
        return false;
    }

    // Privacy Protocol
    session.securityPrivKeyLen = USM_PRIV_KU_LEN;
    session.securityPrivProto = snmp_duplicate_objid(usmAESPrivProtocol, USM_PRIV_PROTO_AES_LEN);
    session.securityPrivProtoLen = USM_PRIV_PROTO_AES_LEN;

    if (generate_Ku(session.securityAuthProto,
                  session.securityAuthProtoLen,
                  (const uint8_t *)privacyPassword.c_str(), privacyPassword.length(),
                  session.securityPrivKey,
                  &session.securityPrivKeyLen) != SNMPERR_SUCCESS)
    {
        LOG_ERROR("Error generating privacy KU for privacy password: " << privacyPassword);
        return false;
    }

    // open the session
    sesp = snmp_open(&session);
    if (!sesp) {
        LOG_ERROR("Unable to open a trap session to: " << session.peername << " with user: " << userName);
        throw std::runtime_error("Unable to open SNMP session!");
        return false;
    }

    add_trap_session(sesp, SNMP_MSG_TRAP2, FALSE, SNMP_VERSION_3);
    return true;
}

However, we are getting this error: [SNMP 3] : snmpd: send_trap: USM unknown security name (no such user exists)

What are we doing wrong?

If we add this line to the snmpd.conf and not use the above-mentioned code, we have no problem sending traps.

trapsess -v 3 -u myUserName -l authPriv -a SHA -A " myAuthenticationPassword " -x AES -X " myPrivacyPassword " udp6:[2001:bb::f8]:162

Thanks,

Mostafa

_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.