From 9d7777b3ffa62929c17c14f086529132a06b4eaf Mon Sep 17 00:00:00 2001 From: Artur Downar Date: Wed, 27 Nov 2013 17:53:47 +0100 Subject: [PATCH] Fix bug 171. EchoReply payload must be the same as the correspoding EchoRequest payload openVSwitch send empty request resulting in null payload in ODP redundant import removed rabased to the latest merged commit Change-Id: I74ebd0995986f385301c7866632d829db8743766 Signed-off-by: Artur Downar --- .../openflow/core/internal/SwitchHandler.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java index 6fddef06a8..7a177fa078 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java @@ -38,6 +38,7 @@ import org.opendaylight.controller.protocol_plugin.openflow.core.ISwitch; import org.openflow.protocol.OFBarrierReply; import org.openflow.protocol.OFBarrierRequest; import org.openflow.protocol.OFEchoReply; +import org.openflow.protocol.OFEchoRequest; import org.openflow.protocol.OFError; import org.openflow.protocol.OFFeaturesReply; import org.openflow.protocol.OFFlowMod; @@ -60,6 +61,7 @@ import org.openflow.util.HexString; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + public class SwitchHandler implements ISwitch { private static final Logger logger = LoggerFactory.getLogger(SwitchHandler.class); private static final int SWITCH_LIVENESS_TIMER = 5000; @@ -371,6 +373,14 @@ public class SwitchHandler implements ISwitch { break; case ECHO_REQUEST: OFEchoReply echoReply = (OFEchoReply) factory.getMessage(OFType.ECHO_REPLY); + + byte []payload = ((OFEchoRequest)msg).getPayload(); + if (payload != null && payload.length != 0 ) { + // the response must have the same payload as the request + echoReply.setPayload(payload); + echoReply.setLength( (short)(echoReply.getLength() + payload.length) ); + } + // respond immediately asyncSendNow(echoReply, msg.getXid()); -- 2.36.6