[ONOS-5267] Initial implementation of MapResolver
Change-Id: I1438b0cc71b8fcb88064830d890ffc38ff9abd42
diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
index 6c723a6..d1ad800 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
@@ -24,7 +24,6 @@
import org.onosproject.lisp.msg.protocols.LispMapNotify;
import org.onosproject.lisp.msg.protocols.LispMapRegister;
import org.onosproject.lisp.msg.protocols.LispMapRequest;
-import org.onosproject.lisp.msg.protocols.LispMapReply;
import org.onosproject.lisp.msg.protocols.LispMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,7 +41,16 @@
// first we need to check whether this is an ECM
if (msg instanceof LispEncapsulatedControl) {
- msg = extractMapRequest((LispEncapsulatedControl) msg);
+ LispMessage innerMsg = extractLispMessage((LispEncapsulatedControl) msg);
+ if (innerMsg instanceof LispMapRequest) {
+ LispMapResolver mapResolver = new LispMapResolver();
+ LispMessage lispMessage = mapResolver.processMapRequest((LispEncapsulatedControl) msg);
+
+ // try to remove the received map-request message from buffer
+ ReferenceCountUtil.release(msg);
+
+ ctx.writeAndFlush(lispMessage);
+ }
}
if (msg instanceof LispMapRegister) {
@@ -54,14 +62,6 @@
ctx.writeAndFlush(mapNotify);
}
-
- if (msg instanceof LispMapRequest) {
- LispMapResolver mapResolver = new LispMapResolver();
- LispMapReply mapReply =
- (LispMapReply) mapResolver.processMapRequest((LispMapRequest) msg);
-
- // TODO: serialize mapReply message and write to channel
- }
}
@Override
@@ -96,7 +96,9 @@
* @param ecm Encapsulated Control Message
* @return extracted LISP message
*/
- private LispMessage extractMapRequest(LispEncapsulatedControl ecm) {
- return ecm.getControlMessage();
+ private LispMessage extractLispMessage(LispEncapsulatedControl ecm) {
+ LispMessage message = ecm.getControlMessage();
+ message.configSender(ecm.getSender());
+ return message;
}
}