Hi Jerome,
I will try to implement a configurable "workaround" which will be
disabled by default.
Best regards,
Frank
Am 28.11.2012 15:19, schrieb Jerome Callaghan:
> Thank you for the response. I understand your position and, of course, the
> final decision is yours. I'll just make a little argument to see what you
> think.
>
> 1) This happens in the real world. We've had a few devices which exhibit
> this behavior. But making the decision not to support it in the low level
> code, it's impossible to accommodate these real world conditions without
> maintaining source code change.
>
> 2) Other packages seem to handle it. I don't have the specifics right now.
> MRTG handles it, for instance. And I'm pretty sure Net-SNMP. I can go back
> and check these if you like.
>
> I guess a counter argument could be that you don't have a lot of demand so it
> must not happen all that much.
>
> I can't think of a hook that would make maintenance any easier. The source
> code change is quite simple. In v1 message processing, MPv1,
> prepareDataElements, look ahead in the message to get the PDU type and pass
> it to createPDU. In createPDU, if the PDU type is the v2 Trap, create a v2
> PDU instead of a v1 PDU.
>
>
> MPv1.java
>
> public int prepareDataElements(MessageDispatcher messageDispatcher,
> ...
>
> // Look ahead to the PDU type
> wholeMsg.mark(64);
> MutableByte pduType = new MutableByte();
> int length2 = BER.decodeHeader(wholeMsg, pduType);
>
> // vxPDU to allow a v2 trap PDU in a v1 message
> PDU vxPDU = createPDU(pduType.getValue());
> pdu.setPdu(vxPDU);
> // Move back to the beginning of the PDU
> wholeMsg.reset();
> vxPDU.decodeBER(wholeMsg);
> ...
>
>
> public PDU createPDU(byte pduType) {
> if(pduType == PDU.TRAP) { // Allow for V2 Trap PDU in V1 message
> logger.debug("Create v2 PDU");
> return new PDU();
> }
> else {
> logger.debug("Create v1 PDU");
> return new PDUv1();
> }
> }
>
>
>
> If you are willing to consider it, perhaps a configuration item could be
> used. The default would be full conformance. Enabling the configuration
> item would allow this non-conforming condition, using if statements on the
> configuration item in the code above for looking ahead.
>
> Thank you,
> Jerome
>
>
> ________________________________________
> From: [email protected] [[email protected]] on behalf of
> Frank Fock [[email protected]]
> Sent: Monday, November 26, 2012 5:12 PM
> To: [email protected]
> Subject: Re: [SNMP4J] v2 PDU in v1 message
>
> Hello Jerome,
>
> I will not add code to SNMP4J that violates the SNMP standards.
> If you need such code, you are free to change it in your version.
> Nevertheless, if some hook methods would help you to
> clarly separate your code from the SNMP4J code, I am willing
> to add such hook methods.
>
> Best regards,
> Frank
>
>
> Am 26.11.2012 18:20, schrieb Jerome Callaghan:
>> Hello,
>>
>> We have some devices which send traps in a v2 PDU but in a v1 message.
>> snmp4j discards these. I've come up with a source code change which looks
>> ahead in v1 message processing to see if it's a v2 PDU and creates a v2 PDU
>> instead of a v1 PDU if so. I've tested and it's working well. Is there
>> someone to talk to about getting this into the source baseline for snmp4j?
>>
>> Thank you,
>> Jerome
>>
>> _______________________________________________
>> SNMP4J mailing list
>> [email protected]
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
> --
> ---
> AGENT++
> Maximilian-Kolbe-Str. 10
> 73257 Koengen, Germany
> https://agentpp.com
> Phone: +49 7024 8688230
> Fax: +49 7024 8688231
>
> _______________________________________________
> SNMP4J mailing list
> [email protected]
> http://lists.agentpp.org/mailman/listinfo/snmp4j
--
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax: +49 7024 8688231
_______________________________________________
SNMP4J mailing list
[email protected]
http://lists.agentpp.org/mailman/listinfo/snmp4j