[ONOS-4718] Initial implementation of LISP address serializer
Change-Id: I71e1923f6daf1abdf2bf9798a9e421c81926a45c
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAfiAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAfiAddress.java
index 006413b..1d88008 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAfiAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAfiAddress.java
@@ -18,6 +18,7 @@
import io.netty.buffer.ByteBuf;
import org.onosproject.lisp.msg.exceptions.LispParseError;
import org.onosproject.lisp.msg.exceptions.LispReaderException;
+import org.onosproject.lisp.msg.exceptions.LispWriterException;
import java.util.Objects;
@@ -74,6 +75,9 @@
return true;
}
+ /**
+ * AFI address reader class.
+ */
public static class AfiAddressReader implements LispAddressReader<LispAfiAddress> {
@Override
@@ -114,4 +118,36 @@
return null;
}
}
+
+ /**
+ * AFI address writer class.
+ */
+ public static class AfiAddressWriter implements LispAddressWriter<LispAfiAddress> {
+
+ @Override
+ public void writeTo(ByteBuf byteBuf, LispAfiAddress address) throws LispWriterException {
+ switch (address.getAfi()) {
+ case IP:
+ new LispIpAddress.IpAddressWriter().writeTo(byteBuf, (LispIpv4Address) address);
+ break;
+ case IP6:
+ new LispIpAddress.IpAddressWriter().writeTo(byteBuf, (LispIpv6Address) address);
+ break;
+ case DISTINGUISHED_NAME:
+ new LispDistinguishedNameAddress.DistinguishedNameAddressWriter().writeTo(byteBuf,
+ (LispDistinguishedNameAddress) address);
+ break;
+ case MAC:
+ new LispMacAddress.MacAddressWriter().writeTo(byteBuf, (LispMacAddress) address);
+ break;
+ case LCAF:
+ new LispLcafAddress.LcafAddressWriter().writeTo(byteBuf, (LispLcafAddress) address);
+ break;
+ case AS:
+ new LispAsAddress.AsAddressWriter().writeTo(byteBuf, (LispAsAddress) address);
+ break;
+ default: break; // TODO: need log warning message
+ }
+ }
+ }
}