[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/LispDistinguishedNameAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java
index d5fbc988..e0d631f 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java
@@ -15,6 +15,9 @@
  */
 package org.onosproject.lisp.msg.types;
 
+import io.netty.buffer.ByteBuf;
+import org.onosproject.lisp.msg.exceptions.LispParseError;
+
 import java.util.Objects;
 
 import static com.google.common.base.MoreObjects.toStringHelper;
@@ -69,4 +72,24 @@
                 .add("distinguished name", distinguishedName)
                 .toString();
     }
+
+    /**
+     * Distinguished name address reader class.
+     */
+    public static class DistinguishedNameAddressReader
+                        implements LispAddressReader<LispDistinguishedNameAddress> {
+
+        @Override
+        public LispDistinguishedNameAddress readFrom(ByteBuf byteBuf) throws LispParseError {
+
+            StringBuilder sb = new StringBuilder();
+            byte character = byteBuf.readByte();
+            while (character != 0) {
+                sb.append((char) character);
+                character = byteBuf.readByte();
+            }
+
+            return new LispDistinguishedNameAddress(sb.toString());
+        }
+    }
 }