[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/LispAppDataLcafAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddress.java
index b1b6fda..284ebe4 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddress.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.nio.ByteBuffer;
import java.util.Objects;
@@ -364,4 +365,29 @@
return buffer.getInt();
}
}
+
+ /**
+ * Application data LCAF address writer class.
+ */
+ public static class AppDataLcafAddressWriter
+ implements LispAddressWriter<LispAppDataLcafAddress> {
+
+ @Override
+ public void writeTo(ByteBuf byteBuf, LispAppDataLcafAddress address)
+ throws LispWriterException {
+
+ LispLcafAddress.serializeCommon(byteBuf, address);
+
+ // TODO: need to handle TOS
+
+ byteBuf.writeByte(address.getProtocol());
+ byteBuf.writeShort(address.getLocalPortLow());
+ byteBuf.writeShort(address.getLocalPortHigh());
+ byteBuf.writeShort(address.getRemotePortLow());
+ byteBuf.writeShort(address.getRemotePortHigh());
+
+ AfiAddressWriter writer = new LispAfiAddress.AfiAddressWriter();
+ writer.writeTo(byteBuf, address.getAddress());
+ }
+ }
}