[ONOS-4718] Deserialize addresses from LISP control message class
With this commit, we try to deserilize all LispAfiAddress from
all LISP control message classes.
Change-Id: Iaf911bff90c45a70859285e426dc1649c3e6db32
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
index 2077059..fd33119 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispListLcafAddress.java
@@ -56,7 +56,7 @@
*/
public final class LispListLcafAddress extends LispLcafAddress {
- private static final byte LENGTH = 24;
+ private static final short LENGTH = 24;
List<LispAfiAddress> addresses;
/**
@@ -70,6 +70,20 @@
}
/**
+ * Initializes list type LCAF address.
+ *
+ * @param reserved1 reserved1 field
+ * @param flag flag
+ * @param reserved2 reserved2 field
+ * @param addresses a set of IPv4 and IPv6 addresses
+ */
+ public LispListLcafAddress(byte reserved1, byte reserved2, byte flag,
+ List<LispAfiAddress> addresses) {
+ super(LispCanonicalAddressFormatEnum.LIST, reserved1, flag, reserved2, LENGTH);
+ this.addresses = addresses;
+ }
+
+ /**
* Obtains a set of AFI addresses including IPv4 and IPv6.
*
* @return a set of AFI addresses
@@ -111,11 +125,13 @@
@Override
public LispListLcafAddress readFrom(ByteBuf byteBuf) throws LispParseError, LispReaderException {
+ LispLcafAddress lcafAddress = LispLcafAddress.deserializeCommon(byteBuf);
- LispAfiAddress ipv4 = new LispIpAddress.IpAddressReader().readFrom(byteBuf);
- LispAfiAddress ipv6 = new LispIpAddress.IpAddressReader().readFrom(byteBuf);
+ LispAfiAddress ipv4 = new LispAfiAddress.AfiAddressReader().readFrom(byteBuf);
+ LispAfiAddress ipv6 = new LispAfiAddress.AfiAddressReader().readFrom(byteBuf);
- return new LispListLcafAddress(ImmutableList.of(ipv4, ipv6));
+ return new LispListLcafAddress(lcafAddress.getReserved1(), lcafAddress.getReserved2(),
+ lcafAddress.getFlag(), ImmutableList.of(ipv4, ipv6));
}
}
}