[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