[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/LispIpv4Address.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java
index 31d607b..1cc5829 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispIpv4Address.java
@@ -15,7 +15,9 @@
*/
package org.onosproject.lisp.msg.types;
+import io.netty.buffer.ByteBuf;
import org.onlab.packet.IpAddress;
+import org.onosproject.lisp.msg.exceptions.LispParseError;
import java.util.Objects;
@@ -54,4 +56,22 @@
public int hashCode() {
return Objects.hash(address, getAfi());
}
+
+ /**
+ * IPv4 address reader class.
+ */
+ public static class Ipv4AddressReader implements LispAddressReader<LispIpv4Address> {
+
+ private static final int SIZE_OF_IPV4_ADDRESS = 4;
+
+ @Override
+ public LispIpv4Address readFrom(ByteBuf byteBuf) throws LispParseError {
+
+ byte[] ipByte = new byte[SIZE_OF_IPV4_ADDRESS];
+ byteBuf.readBytes(ipByte);
+ IpAddress ipAddress = IpAddress.valueOf(IpAddress.Version.INET, ipByte);
+
+ return new LispIpv4Address(ipAddress);
+ }
+ }
}