[ 
https://issues.apache.org/jira/browse/CAMEL-26055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18131147#comment-18131147
 ] 

Claus Ibsen commented on CAMEL-26055:
-------------------------------------

Fixed in PR https://github.com/apache/camel/pull/28373

_Claude Code on behalf of davsclaus_

> camel-snmp - the producer without type sends no OIDs, and the trap producer 
> fails for a body that is not a PDU
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26055
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26055
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-snmp
>    Affects Versions: 4.18.0, 4.22.0, 4.23.0
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> Found while adding the catalog body types of snmp (CAMEL-24961), checked with 
> {{camel run}} with a small SNMP4J agent bean and trap consumers on localhost.
> h4. 1. The producer without type sends no OIDs
> {{createPdu}} adds the oids only for type=POLL ({{SnmpProducer}}, main 
> 5aac7df76b83, lines 82-87), but type has no default, and the producer without 
> it, as in the docs ("It can also be used to request information using GET 
> method."), sends a GET without variables. Checked on 4.24.0-SNAPSHOT with 
> {{camel run}}: {{snmp:...?oids=1.3.6.1.2.1.1.1.0}} without type gave an empty 
> {{<snmp></snmp>}}, with no error; with type=POLL the value.
> *Proposed change*: default type to POLL for the producer, or add the oids for 
> any GET.
> h4. 2. The trap producer fails with a NullPointerException for a body that is 
> not a PDU
> The trap is {{getBody(PDU.class)}} ({{SnmpTrapProducer}}, line 101), and 
> nothing converts to a PDU, so text, no body or the XML of a received trap 
> fails at line 103 with {{NullPointerException: Cannot invoke 
> "org.snmp4j.PDU.setErrorIndex(int)" because "trap" is null}}. Checked on 
> 4.24.0-SNAPSHOT with {{camel run}}.
> *Proposed change*: use {{getMandatoryBody(PDU.class)}}, so the error says 
> what the body must be.
> h4. 3. type=GET_NEXT on a consumer fails at start
> The consumer supports TRAP and POLL only and throws 
> {{IllegalArgumentException: The type 'GET_NEXT' is not valid!}} for GET_NEXT 
> ({{SnmpEndpoint}}, lines 122-133), though the catalog offers GET_NEXT for the 
> type of the endpoint. Checked on 4.24.0-SNAPSHOT with {{camel run}}.
> *Proposed change*: say in the option that GET_NEXT is for the producer, or 
> support a walk in the poller.
> h4. 4. The SnmpMessage body of the producer does not convert to text
> After a GET the body is a {{new SnmpMessage(..., response)}} (line 199), a 
> Camel message as the body, and no type converter takes a Message to a String, 
> so {{convertBodyTo String}} fails, where the consumer gives the XML text of 
> the PDU. Checked on 4.24.0-SNAPSHOT with {{camel run}}: 
> {{InvalidPayloadException: No body available of type: java.lang.String but 
> has type: org.apache.camel.component.snmp.SnmpMessage}}.
> *Proposed change*: set the body to the XML text, as the consumer does, or add 
> a converter from SnmpMessage.
> h4. Also read in the code, not run
> * The PDU of a trap is not checked against snmpVersion (a PDUv1 for 0, a PDU 
> for 1, a ScopedPDU for 3), and the producer changes the PDU of the body in 
> place.
> * An error answer of a GET (such as noSuchName) is given as a normal message: 
> the XML has no error status.
> * Without a port, the default is 161 only for POLL and 162 otherwise 
> ({{SnmpEndpoint}}, lines 267-272), so a GET_NEXT or untyped producer goes to 
> 162.
> * The poller keeps one request PDU for all polls ({{SnmpOIDPoller}}, lines 51 
> and 76), the CAMEL-25280 case, which was fixed in SnmpProducer only.
> * {{poll()}} always returns 1 (line 144), so sendEmptyMessageWhenIdle and the 
> backoff options do not work.
> * Stopping one SNMPv3 endpoint removes the USM that all of them share.
> * The docs give version2c and version3 as values of snmpVersion (they are 0, 
> 1 and 3), and say securityName and peerAddress are text (an OctetString and 
> an Address).
> _Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to