Bug 9127: Make IT more robust when receiving packets
[lispflowmapping.git] / mappingservice / lisp-proto / src / main / java / org / opendaylight / lispflowmapping / lisp / serializer / MapRegisterSerializer.java
index cc2b8446dc4c6329551270aebd5400cccf4bc757..ab2bb32d331c0f427905a5dcba9c67d9c56442e1 100644 (file)
@@ -85,10 +85,15 @@ public final class MapRegisterSerializer {
     @SuppressWarnings("checkstyle:IllegalCatch")
     public MapRegister deserialize(ByteBuffer registerBuffer, InetAddress sourceRloc) {
         try {
+            final byte typeAndFlags = registerBuffer.get();
+            final int type = typeAndFlags >> 4;
+            if (MessageType.forValue(type) != MessageType.MapRegister) {
+                throw new LispSerializationException("Expected Map-Register packet (type 3), but was type " + type);
+            }
+
             MapRegisterBuilder builder = new MapRegisterBuilder();
             builder.setMappingRecordItem(new ArrayList<MappingRecordItem>());
 
-            byte typeAndFlags = registerBuffer.get();
             boolean xtrSiteIdPresent = ByteUtil.extractBit(typeAndFlags, Flags.XTRSITEID);
             builder.setProxyMapReply(ByteUtil.extractBit(typeAndFlags, Flags.PROXY));
             builder.setXtrSiteIdPresent(xtrSiteIdPresent);