[AGENT++] How to add trap IP addresses?

Henning Eggers henning.eggers at plath.de
Wed Oct 20 12:15:17 CEST 2004


> Is there a way that someone explains how to set those values at run-time?

Here is a code snippet that works for me:
(SnmpRow is just a helper class to produce a vblist.)
(removeTableRow sets RowStatus to "destroy".)

 Vbx vbs[8];                                 // construct a Vb object
 int status;
 OctetStr indexstr( "myNMS" );  // identify this row
 Oidx indexoid = Oidx::from_string( indexstr, FALSE );
 SnmpPdu pdu( _target );

 // Use the same index in all tables
 SnmpRow row( indexoid );

 // remove entries if they exist
 removeTableRow( oidSnmpNotifyRowStatus,       indexoid );
 removeTableRow( oidSnmpTargetParamsRowStatus, indexoid );
 removeTableRow( oidSnmpTargetAddrRowStatus,   indexoid );

 // New row in snmpNotifyTable
 row.add( oidSnmpNotifyTag,         OctetStr(  indexstr ) );
 row.add( oidSnmpNotifyType,        SnmpInt32( 1 ) ); // trap(1), inform(2)
 row.add( oidSnmpNotifyStorageType, SnmpInt32( 3 ) ); // nonVolatile(3)
 row.add( oidSnmpNotifyRowStatus,   SnmpInt32( 4 ) ); // createAndGo(4)

 pdu.set_vblist( row.vbs(), row.size() );
 status = _snmp->set( pdu, *_target->getTarget() );

 // New row in snmpTargetParamsTable
 row.clear();
 row.add( oidSnmpTargetParamsMPModel,       SnmpInt32( 3 ) ); // SNMPv3
 row.add( oidSnmpTargetParamsSecurityModel, SnmpInt32( 3 ) ); // USM
 row.add( oidSnmpTargetParamsSecurityName,  OctetStr(
_target->_securityName ) );
 row.add( oidSnmpTargetParamsSecurityLevel, SnmpInt32(
_target->_securityLevel ) );
 row.add( oidSnmpTargetParamsStorageType,   SnmpInt32( 3 ) ); //
nonVolatile(3)
 row.add( oidSnmpTargetParamsRowStatus,     SnmpInt32( 4 ) ); //
createAndGo(4)

 pdu.set_vblist( row.vbs(), row.size() );
 status = _snmp->set( pdu, *_target->getTarget() );

 // New row in snmpTargetAddrTable
 row.clear();
 row.add( oidSnmpTargetAddrTDomain,     Oidx(      "1.3.6.1.6.1.1" ) ); //
snmpUDPDomain
 row.add( oidSnmpTargetAddrStorageType, SnmpInt32( 3 ) ); // nonVolatile(3)
 row.add( oidSnmpTargetAddrRowStatus,   SnmpInt32( 5 ) ); //
createAndWait(5)

 pdu.set_vblist( row.vbs(), row.size() );
 status = _snmp->set( pdu, *_target->getTarget() );

 // Complete row in snmpTargetAddrTable
 row.clear();
 // convert string ip to binary
 IpAddress ipaddr( f_ip );
 unsigned char bin_addr[] = { ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
  (f_port>>8) & 0xff, f_port & 0xff };

 row.add( oidSnmpTargetAddrTDomain,     Oidx(      "1.3.6.1.6.1.1" ) ); //
snmpUDPDomain
 row.add( oidSnmpTargetAddrTAddress,    OctetStr(  bin_addr, 6 ) ); //
 row.add( oidSnmpTargetAddrTimeout,     SnmpInt32( 1500 ) );
 row.add( oidSnmpTargetAddrRetryCount,  SnmpInt32( 3 ) );
 row.add( oidSnmpTargetAddrTagList,     OctetStr(  indexstr ) ); // Refer to
NotifyTable
 row.add( oidSnmpTargetAddrParams,      OctetStr(  indexstr ) ); // Refer to
TargetParamsTable
 row.add( oidSnmpTargetAddrStorageType, SnmpInt32( 3 ) ); // nonVolatile(3)
 row.add( oidSnmpTargetAddrRowStatus,   SnmpInt32( 1 ) ); // active(1)

 pdu.set_vblist( row.vbs(), row.size() );
 status = _snmp->set( pdu, *_target->getTarget() );

 row.clear();





More information about the AGENTPP mailing list