[ONOS-4718] Initial implementation of LISP address deserializer

Change-Id: I522e16e7fd197380cf4c99038561fe9aa8f93730
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
index 85e5a86..2077059 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
@@ -16,6 +16,9 @@
 package org.onosproject.lisp.msg.types;
 
 import com.google.common.collect.ImmutableList;
+import io.netty.buffer.ByteBuf;
+import org.onosproject.lisp.msg.exceptions.LispParseError;
+import org.onosproject.lisp.msg.exceptions.LispReaderException;
 
 import java.util.List;
 import java.util.Objects;
@@ -51,7 +54,7 @@
  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  * }</pre>
  */
-public class LispListLcafAddress extends LispLcafAddress {
+public final class LispListLcafAddress extends LispLcafAddress {
 
     private static final byte LENGTH = 24;
     List<LispAfiAddress> addresses;
@@ -99,4 +102,20 @@
                 .add("addresses", addresses)
                 .toString();
     }
+
+    /**
+     * List LCAF address reader class.
+     */
+    public static class ListLcafAddressReader implements LispAddressReader<LispListLcafAddress> {
+
+        @Override
+        public LispListLcafAddress readFrom(ByteBuf byteBuf) throws LispParseError, LispReaderException {
+
+
+            LispAfiAddress ipv4 = new LispIpAddress.IpAddressReader().readFrom(byteBuf);
+            LispAfiAddress ipv6 = new LispIpAddress.IpAddressReader().readFrom(byteBuf);
+
+            return new LispListLcafAddress(ImmutableList.of(ipv4, ipv6));
+        }
+    }
 }