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