[SNMP4J] How to Remove an SNMP Community String.
Vivi Zhang
vzhang at anuesystems.com
Mon Dec 29 16:22:11 CET 2008
Frank:
Thank you very much for your help. As you suggested, the problem is
around the coexistenceInfo within SnmpCommunityMIB, indeed.
I did set the coexistence provider at the CommandProcessor. The
createRow adds a cummunity row entry to coexistenceInfo map.
The statement
"communityMIB.getSnmpCommunityEntry().removeRow(aRow.getIndex());"
removes a community row from Community entry table. But this statement
does not remove the row from coexistenceInfo which is used by
CommandProcessor to check the security name.
Currently, I added a statement "comEntryModel.freeRow(aRow);"
immediately after preivous statement, and this stmt helps.
private void removeOneCommunity(SnmpCommunityMIB communityMIB,
MOTableRow aRow)
{
MOMutableTableModel comEntryModel =
(MOMutableTableModel)communityMIB.getSnmpCommunityEntry().getModel();
communityMIB.getSnmpCommunityEntry().removeRow(aRow.getIndex());
comEntryModel.freeRow(aRow);
}
The SnmpCommunityEntryRowFactory.freeRow() is invoked which removes the
community string from coexistenceInfo.
Is this preferred way to remove a community string?
Thanks again.
Vivi
Frank Fock wrote:
> Hi Vivi,
>
> I assume that you did not set the coexistence provider
> at the CommandProcessor to your instance of the
> SnmpCommunityMIB class.
>
> The CommandProcessor then uses the SNMPv1/v2c community
> as security name directly without mapping it to a
> security name using the SNMP-COMMUNITY-MIB mapping.
> Since you have an equal security name in your VACM
> configuration, the request goes through.
>
> For further questions read RFC 3414 and 3415.
>
> Regards,
> Frank
>
> Vivi Zhang wrote:
>> Let me resend the email.
>>
>> The previous email content was in an attachment. It did not show up
>> in SNMP4j email archives.
>>
>> =============================================================================================
>>
>>
>> Hi,
>>
>> I would really appreciate any help to find a way to remove an SNMP
>> community string .
>> I am using SNMP4j 1.9.3c, and SNMP4j agent 1.2.1d.
>>
>> I have no problem to add more community string to a running SNMP
>> agent. But, when I have not been successfully remove a community string.
>>
>> Following is a section of code which initializes community mib and
>> other mibs.
>>
>> vacmMIB = new VacmMIB(new MOServer[] { server });
>> snmpTargetMIB = new SnmpTargetMIB(dispatcher);
>> snmpNotificationMIB = new SnmpNotificationMIB();
>> * snmpCommunityMIB = new SnmpCommunityMIB(snmpTargetMIB);*
>> this.getServer().addContext(DEFAULTCONTEXT);
>> initConfigMIB();
>> notificationOriginator = new NotificationOriginatorImpl(session,
>> vacmMIB,
>>
>> snmpv2MIB.getSysUpTime(),
>>
>> snmpTargetMIB,
>>
>> snmpNotificationMIB);
>> snmpv2MIB.setNotificationOriginator(notificationOriginator);
>>
>> Following is a section of code which add a community string to
>> community MIB
>>
>> Variable[] com2sec = new Variable[] {
>> new OctetString(aCommunity), SECNAMEV1V2,
>> getContextEngineID(), DEFAULTCONTEXT,
>> new OctetString(), // transport tag
>> new Integer32(StorageType.nonVolatile), // storage type
>> new Integer32(RowStatus.active) // row status
>> };
>>
>> MOTableRow row =
>> communityMIB.getSnmpCommunityEntry().createRow(index,
>>
>> com2sec);
>> communityMIB.getSnmpCommunityEntry().addRow(row);
>>
>> To remove all community strings, I tried following code:
>> MOMutableTableModel comEntryModel =
>> (MOMutableTableModel)communityMIB.getSnmpCommunityEntry().getModel();
>> comEntryModel .clear();
>>
>> After this call, I expect all community rows are gone, and all SNMP
>> queries should fail. But this does not happen.
>>
>> I also try to remove an individual community string using API call
>> communityMIB.getSnmpCommunityEntry().removeRow(index); where index is
>> a valid OID for a community string.
>> In both cases, the row is removed, but the event did not fired since
>> moTableModelListeners == null.
>> public synchronized MOTableRow removeRow(OID index) {
>> *MOTableRow row = (MOTableRow) rows.remove(index);*
>> if ((row != null) && (moTableModelListeners != null)) {
>> MOTableModelEvent event =
>> new MOTableModelEvent(this, MOTableModelEvent.ROW_REMOVED, row);
>> fireTableModelChanged(event);
>> }
>> return row;
>> }
>>
>> After the calls, I am still able to query the snmp agent with
>> "removed" community string.
>>
>> Wonder if it is expected behavior. Or I need config the
>> TableModelListeners for SnmpCommunityEntry table.
>> Please advise.
>>
>> Vivi
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
>
More information about the SNMP4J
mailing list