[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/LispMacAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java
index 3a36255..ba789b6 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispMacAddress.java
@@ -15,7 +15,9 @@
  */
 package org.onosproject.lisp.msg.types;
 
+import io.netty.buffer.ByteBuf;
 import org.onlab.packet.MacAddress;
+import org.onosproject.lisp.msg.exceptions.LispParseError;
 
 import java.util.Objects;
 
@@ -68,4 +70,22 @@
     public String toString() {
         return address.toString();
     }
+
+    /**
+     * MAC address reader class.
+     */
+    public static class MacAddressReader implements LispAddressReader<LispMacAddress> {
+
+        private static final int SIZE_OF_MAC_ADDRESS = 6;
+
+        @Override
+        public LispMacAddress readFrom(ByteBuf byteBuf) throws LispParseError {
+
+            byte[] macByte = new byte[SIZE_OF_MAC_ADDRESS];
+            byteBuf.readBytes(macByte);
+            MacAddress macAddress = MacAddress.valueOf(macByte);
+
+            return new LispMacAddress(macAddress);
+        }
+    }
 }