[SNMP4J] Report doesn't have ContextEngineID/ContextName when Request which has nonexistent ContextEngineID was recieved.

Frank Fock fock at agentpp.com
Thu May 24 21:52:53 CEST 2007


Ok, sorry. This was indeed a regression.
The following patch corrects it:

--- ProxyForwarderImpl.java	(revision 235)
+++ ProxyForwarderImpl.java	(working copy)
@@ -328,7 +328,7 @@
       target.add(new VariableBinding(SnmpConstants.snmpTrapEnterprise,
                                      sourceV1.getEnterprise()));
       OctetString community =
-          new OctetString(request.getSecurityName());
+          new OctetString(request.getCommandEvent().getSecurityName());
       target.add(new VariableBinding(SnmpConstants.snmpTrapCommunity,
                                      community));
     }

Best regards,
Frank

Kanda Norimichi wrote:
> Dear Mr. Fock:
> 
> Thank you for your reply and support.
> 
> I retried with the corrected module,
> I could confirm Trap message was forwarded.
> 
> But, snmpTrapCommunity value included in forwarded Trap
> was value of coexistenceInfo.getSecurityName().
> It would appear that the program code near ProxyForwardImpl.java 330th line
> (proxyForwardTranslation()) needs to be corrected.
> 
> Sincerely.
> 
> Norimichi Kanda
> 
> 
>> -----Original Message-----
>> From: Frank Fock [mailto:fock at agentpp.com]
>> Sent: Thursday, May 24, 2007 3:59 AM
>> To: Kanda Norimichi
>> Cc: snmp4j at agentpp.org
>> Subject: Re: [SNMP4J] Report doesn't have ContextEngineID/ContextName
>> when Request which has nonexistent ContextEngineID was recieved.
>>
>>
>> OK, the required patch is too complex to
>> post it here. You can download the fixed
>> nightly build from
>> http://www.oosnmp.com/~katz/snapshot/
>> The date has to be 20070524 or later.
>>
>> Best regards,
>> Frank
>>
>> Kanda Norimichi wrote:
>>> Dear Mr. Fock:
>>>
>>> Thank you for your reply.
>>>
>>> I added correction program based on your advice and tried,
>>> so GetRequest was sent as response.
>>> I think perhaps it is because PDU-type isn't set.
>>> ----
>>>         if (request.getCommandEvent().getMessageProcessingModel() == MPv3.ID) {
>>>           ScopedPDU reportPDU = new ScopedPDU();
>>>           reportPDU.setContextEngineID(request.getContextEngineID());
>>>           reportPDU.setContextName(request.getContext());
>>> +         reportPDU.setType(PDU.REPORT);
>>>           reportPDU.add(new VariableBinding(SnmpConstants.snmpProxyDrops,
>>>                                             cevent.getCurrentValue()));
>>>           sendResponse(request.getCommandEvent(), reportPDU);
>>>         }
>>> ----
>>> Report message became to be sent with above correction.
>>>
>>> In addition, I couldn't check the operation about one more
>>> correction (sendUnknownPDUHandlersReport()).
>>>
>>>
>>> And now, I found another problem that I think something is wrong with 
>>> operation.
>>> Would you check that?
>>>
>>> Forwarding SNMPv1 Trap to SNMPv3 Manager,
>>> but in ProxyForwarderImpl#matchParameters(), comparative result of secName
>>> is NG and forward was failed in.
>>> So I debugged program, result of request.getSecurityName() was Community 
>>> Name.
>>> I retraced more, in CommandProcessor#processPdu(),
>>> after succeeding in
>>>        cinfo = coexistenceProvider.getCoexistenceInfo(sname);
>>> securityName of "event" isn't rewritten.
>>> (In the case of securityName which "cinfo" has, 
>>>  ProxyForwarderImpl#matchParameters() is succeeded in.)
>>>
>>> Where should I correct?
>>>
>>> Sincerely.
>>>
>>> Norimichi Kanda
>>>
>>>> -----Original Message-----
>>>> From: Frank Fock [mailto:fock at agentpp.com]
>>>> Sent: Tuesday, May 22, 2007 3:21 PM
>>>> To: Kanda Norimichi
>>>> Cc: snmp4j at agentpp.org
>>>> Subject: Re: [SNMP4J] Report doesn't have ContextEngineID/ContextName
>>>> when Request which has nonexistent ContextEngineID was recieved.
>>>>
>>>>
>>>> Hello Mr. Kanda,
>>>>
>>>> Thank you for your bug report. The following
>>>> patch should fix it:
>>>>
>>>> @@ -299,8 +299,12 @@
>>>>      CounterEvent counter =
>>>>          new CounterEvent(this, SnmpConstants.snmpUnknownPDUHandlers);
>>>>      fireIncrementCounter(counter);
>>>> -    if (command.getMessageProcessingModel() == MessageProcessingModel.MPv3) {
>>>> -      PDU report = new PDU();
>>>> +    if ((command.getMessageProcessingModel() == MessageProcessingModel.MPv3) &&
>>>> +        (command.getPDU() instanceof ScopedPDU)) {
>>>> +      ScopedPDU request = (ScopedPDU) command.getPDU();
>>>> +      ScopedPDU report = new ScopedPDU();
>>>> +      report.setContextEngineID(request.getContextEngineID());
>>>> +      report.setContextName(request.getContextName());
>>>>        report.setType(PDU.REPORT);
>>>>        report.add(new VariableBinding(counter.getOid(),
>>>>                                       counter.getCurrentValue()));
>>>> @@ -525,7 +529,9 @@
>>>>
>>>> SnmpConstants.snmpProxyDrops);
>>>>          fireIncrementCounter(cevent);
>>>>          if (request.getCommandEvent().getMessageProcessingModel() == MPv3.ID) {
>>>> -          PDU reportPDU = new PDU();
>>>> +          ScopedPDU reportPDU = new ScopedPDU();
>>>> +          reportPDU.setContextEngineID(request.getContextEngineID());
>>>> +          reportPDU.setContextName(request.getContext());
>>>>            reportPDU.add(new VariableBinding(SnmpConstants.snmpProxyDrops,
>>>>                                              cevent.getCurrentValue()));
>>>>            sendResponse(request.getCommandEvent(), reportPDU);
>>>>
>>>> Best regards,
>>>> Frank
>>>>
>>>> Kanda Norimichi wrote:
>>>>> Dear Mr. Fock:
>>>>>
>>>>> I am Kanda and I work at Fujisoft.
>>>>>
>>>>> I made SNMP Agent (with ProxyForwarder) using SNMP4J-agent.
>>>>> In the case of sending GetRequest which has wrong ContextEngineID to that 
>>>>> Agent,the Report(Response?) whose PDU part is incorrect format was returned.
>>>>>
>>>>> So I debugged program, in CommandProcessor.java 528th line,
>>>>> the PDU instance created is set at PDU part instead of ScopedPDU which 
>>>>> is used in SNMPv3.
>>>>> Is it intended operation?
>>>>>
>>>>> So, in that case, would you tell me if you have some idea about other 
>>>>> thinkable probelem in your mind?
>>>>>
>>>>> Sincerely.
>>>>>
>>>>> Norimichi Kanda
>>>>>
>>>>> _______________________________________________
>>>>> SNMP4J mailing list
>>>>> SNMP4J at agentpp.org
>>>>> http://lists.agentpp.org/mailman/listinfo/snmp4j
>>>> -- 
>>>> AGENT++
>>>> http://www.agentpp.com
>>>> http://www.mibexplorer.com
>>>> http://www.mibdesigner.com
>>>>
>> -- 
>> AGENT++
>> http://www.agentpp.com
>> http://www.mibexplorer.com
>> http://www.mibdesigner.com
>>

-- 
AGENT++
http://www.agentpp.com
http://www.mibexplorer.com
http://www.mibdesigner.com




More information about the SNMP4J mailing list