[SNMP4J] How to use ProxyForwarder
Kanda Norimichi
nkanda at fsi.co.jp
Thu Mar 22 13:30:36 CET 2007
Dear Mr. Fock:
Thank you very much for your reply of March 21.
I tried to fix ProxyForwarderImpl.java following your advice and check the operation.
So I could confirm it was set intended contextEngineID and contextName.
But I found another problem.
For a Trap from MA, two same forwarding Traps were sent to NMS.
It was caused by adding listener to MessageDispatcher doubly.
----
Thread [DefaultUDPTransportMapping_0.0.0.0/162] (Suspended (entry into method processPdu in CommandProcessor))
CommandProcessor.processPdu(CommandResponderEvent) line: 84
Snmp$NotificationDispatcher.processPdu(CommandResponderEvent) line: 1617
Snmp.fireProcessPdu(CommandResponderEvent) line: 1281
Snmp.processPdu(CommandResponderEvent) line: 1144
MessageDispatcherImpl.fireProcessPdu(CommandResponderEvent) line: 573
MessageDispatcherImpl.dispatchMessage(TransportMapping, MessageProcessingModel, Address, BERInputStream) line: 260
MessageDispatcherImpl.processMessage(TransportMapping, Address, BERInputStream) line: 320
MessageDispatcherImpl.processMessage(TransportMapping, Address, ByteBuffer) line: 282
DefaultUdpTransportMapping(AbstractTransportMapping).fireProcessMessage(Address, ByteBuffer) line: 83
DefaultUdpTransportMapping$ListenThread.run() line: 323
Thread [DefaultUDPTransportMapping_0.0.0.0/162] (Suspended (entry into method processPdu in CommandProcessor))
CommandProcessor.processPdu(CommandResponderEvent) line: 84
MessageDispatcherImpl.fireProcessPdu(CommandResponderEvent) line: 573
MessageDispatcherImpl.dispatchMessage(TransportMapping, MessageProcessingModel, Address, BERInputStream) line: 260
MessageDispatcherImpl.processMessage(TransportMapping, Address, BERInputStream) line: 320
MessageDispatcherImpl.processMessage(TransportMapping, Address, ByteBuffer) line: 282
DefaultUdpTransportMapping(AbstractTransportMapping).fireProcessMessage(Address, ByteBuffer) line: 83
DefaultUdpTransportMapping$ListenThread.run() line: 323
----
Tentatively I resolved the problem by changing second argument of
session.addNotificationListener()
at the 114th line in TestProxy.java to dummy listener.
----
// // NOTE: 2nd trial and error
// session.addNotificationListener(new UdpAddress(162), agent);
// NOTE: 3rd trial and error
session.addNotificationListener(new UdpAddress(162), new CommandResponder() {
public void processPdu(CommandResponderEvent event) {
// NOTE: dummy listener
}
});
----
Is it the right resolution?
Also, when I make my program generating Snmp instance as well as 'session'
for receiving the Trap at the instance,
is it no problem with taking same way : setting CommandProcessor instance as
the listener which is added Snmp instance?
Sincerely.
Norimichi Kanda
> -----Original Message-----
> From: Frank Fock [mailto:fock at agentpp.com]
> Sent: Wednesday, March 21, 2007 4:25 AM
> To: Kanda Norimichi
> Cc: snmp4j at agentpp.org
> Subject: Re: [SNMP4J] How to use ProxyForwarder
>
>
> Hi Kanda,
>
> This is indeed a bug which can be fixed
> by the following patch on ProxyForwarderImpl.java:
>
> @@ -199,6 +199,7 @@
> }
> PDU reqPDU = request.getCommandEvent().getPDU();
> PDU pdu = DefaultPDUFactory.createPDU(target, reqPDU.getType());
> + setScope(request, pdu);
> try {
> proxyForwardTranslation(request, reqPDU, pdu);
> ResponseEvent response = null;
> @@ -402,6 +403,7 @@
> try {
> PDU reqPDU = request.getCommandEvent().getPDU();
> PDU pdu = DefaultPDUFactory.createPDU(target,
> reqPDU.getType());
> + setScope(request, pdu);
> proxyForwardTranslation(request, reqPDU, pdu);
> ResponseEvent resp = session.send(pdu, target);
> if (logger.isInfoEnabled()) {
> @@ -436,6 +438,14 @@
> return allOK;
> }
>
> + private void setScope(ProxyForwardRequest request, PDU pdu) {
> + if (pdu instanceof ScopedPDU) {
> + ScopedPDU scopedPDU = (ScopedPDU)pdu;
> + scopedPDU.setContextEngineID(request.getContextEngineID());
> + scopedPDU.setContextName(request.getContext());
> + }
> + }
> +
>
> Please let me know if this fixes the issue!
>
> Best regards,
> Frank
>
>
> Kanda Norimichi wrote:
> > Dear Mr. Fock:
> >
> > I am Kanda and I work at Fujisoft.
> >
> > I hope to use ProxyForwarder.
> > But SNMPv1-Trap forward doesn't operate correctly.
> >
> > I'll show below specifically.
> > I'm designing the following system structure.
> >
> > MA - TestProxy - NMS
> >
> > "MA" is Managed-Agent, it is SNMP agent that support SNMPv1.
> > I hope that message from MA will be forwarded to NMS with
> > the addition of contextEngineID that generated from
> > MA's IP address in TestProxy and fixed contextName.
> >
> > But in TestProxy made by our system, contextEngineID configured actually is
> > replaced by snmpEngineID of TestProxy.
> > ContextEngineID and contextName that should be configured forwarded Trap are
> > already added to snmpCommunityTable.
> >
> > I guess, maybe I failed in making TestProxy.
> > But I couldn't find sample program and I have no idea what should I do.
> > Would you give me any advice?
> >
> > I'll attach TestProxy made by arranging org.snmp4j.agent.test.TestAgent.
> >
> > Sincerely.
> >
> > Norimichi Kanda
> > ----
[deleted]
> > ----
> >
> > _______________________________________________
> > 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
>
More information about the SNMP4J
mailing list