[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));
+ }
+ }
}