[ONOS-6142] Add AppData and AS extension addresses with unit test
- Correct RFC page number for LCAF addresses
Change-Id: I51dbf02f69c15aad81d5571198b39e030f991a96
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAppDataAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAppDataAddress.java
index 7819a3b..8766aa5 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAppDataAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAppDataAddress.java
@@ -15,27 +15,317 @@
*/
package org.onosproject.drivers.lisp.extensions;
+import com.google.common.collect.Maps;
+import org.onlab.util.KryoNamespace;
+import org.onosproject.mapping.addresses.ASMappingAddress;
+import org.onosproject.mapping.addresses.DNMappingAddress;
+import org.onosproject.mapping.addresses.EthMappingAddress;
import org.onosproject.mapping.addresses.ExtensionMappingAddress;
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
+import org.onosproject.mapping.addresses.IPMappingAddress;
+import org.onosproject.mapping.addresses.MappingAddress;
import org.onosproject.net.flow.AbstractExtension;
+import org.onosproject.store.serializers.KryoNamespaces;
+
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.APPLICATION_DATA_ADDRESS;
/**
* Implementation of LISP application data address.
+ * When a locator-set needs to be conveyed based on the type of application or
+ * the Per-Hop Behavior (PHB) of a packet, the Application Data Type can be used.
*/
-public class LispAppDataAddress extends AbstractExtension
+public final class LispAppDataAddress extends AbstractExtension
implements ExtensionMappingAddress {
+
+ private static final String PROTOCOL = "protocol";
+ private static final String IP_TOS = "ipTos";
+ private static final String LOCAL_PORT_LOW = "localPortLow";
+ private static final String LOCAL_PORT_HIGH = "localPortHigh";
+ private static final String REMOTE_PORT_LOW = "remotePortLow";
+ private static final String REMOTE_PORT_HIGH = "remotePortHigh";
+ private static final String ADDRESS = "address";
+
+ private byte protocol;
+ private int ipTos;
+ private short localPortLow;
+ private short localPortHigh;
+ private short remotePortLow;
+ private short remotePortHigh;
+ private MappingAddress address;
+
+ private final KryoNamespace appKryo = new KryoNamespace.Builder()
+ .register(KryoNamespaces.API)
+ .register(MappingAddress.class)
+ .register(MappingAddress.Type.class)
+ .register(IPMappingAddress.class)
+ .register(ASMappingAddress.class)
+ .register(DNMappingAddress.class)
+ .register(EthMappingAddress.class)
+ .build();
+
+ /**
+ * Default constructor.
+ */
+ public LispAppDataAddress() {
+ }
+
+ /**
+ * Creates an instance with initialized parameters.
+ *
+ * @param protocol protocol number
+ * @param ipTos IP type of service
+ * @param localPortLow low-ranged local port number
+ * @param localPortHigh high-ranged local port number
+ * @param remotePortLow low-ranged remote port number
+ * @param remotePortHigh high-ranged remote port number
+ */
+ private LispAppDataAddress(byte protocol, int ipTos, short localPortLow,
+ short localPortHigh, short remotePortLow,
+ short remotePortHigh, MappingAddress address) {
+ this.protocol = protocol;
+ this.ipTos = ipTos;
+ this.localPortLow = localPortLow;
+ this.localPortHigh = localPortHigh;
+ this.remotePortLow = remotePortLow;
+ this.remotePortHigh = remotePortHigh;
+ this.address = address;
+ }
+
+ /**
+ * Obtains protocol type.
+ *
+ * @return protocol type
+ */
+ public byte getProtocol() {
+ return protocol;
+ }
+
+ /**
+ * Obtains IP type of service.
+ *
+ * @return IP type of service
+ */
+ public int getIpTos() {
+ return ipTos;
+ }
+
+ /**
+ * Obtains local port low.
+ *
+ * @return local port low
+ */
+ public short getLocalPortLow() {
+ return localPortLow;
+ }
+
+ /**
+ * Obtains local port high.
+ *
+ * @return local port high
+ */
+ public short getLocalPortHigh() {
+ return localPortHigh;
+ }
+
+ /**
+ * Obtains remote port low.
+ *
+ * @return remote port low
+ */
+ public short getRemotePortLow() {
+ return remotePortLow;
+ }
+
+ /**
+ * Obtains remote port high.
+ *
+ * @return remote port high
+ */
+ public short getRemotePortHigh() {
+ return remotePortHigh;
+ }
+
+ /**
+ * Obtains mapping address.
+ *
+ * @return mapping address
+ */
+ public MappingAddress getAddress() {
+ return address;
+ }
+
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return APPLICATION_DATA_ADDRESS.type();
}
@Override
public byte[] serialize() {
- return new byte[0];
+ Map<String, Object> parameterMap = Maps.newHashMap();
+ parameterMap.put(PROTOCOL, protocol);
+ parameterMap.put(IP_TOS, ipTos);
+ parameterMap.put(LOCAL_PORT_LOW, localPortLow);
+ parameterMap.put(LOCAL_PORT_HIGH, localPortHigh);
+ parameterMap.put(REMOTE_PORT_LOW, remotePortLow);
+ parameterMap.put(REMOTE_PORT_HIGH, remotePortHigh);
+ parameterMap.put(ADDRESS, address);
+
+ return appKryo.serialize(parameterMap);
}
@Override
public void deserialize(byte[] data) {
+ Map<String, Object> parameterMap = appKryo.deserialize(data);
+ this.protocol = (byte) parameterMap.get(PROTOCOL);
+ this.ipTos = (int) parameterMap.get(IP_TOS);
+ this.localPortLow = (short) parameterMap.get(LOCAL_PORT_LOW);
+ this.localPortHigh = (short) parameterMap.get(LOCAL_PORT_HIGH);
+ this.remotePortLow = (short) parameterMap.get(REMOTE_PORT_LOW);
+ this.remotePortHigh = (short) parameterMap.get(REMOTE_PORT_HIGH);
+ this.address = (MappingAddress) parameterMap.get(ADDRESS);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(protocol, ipTos, localPortLow, localPortHigh,
+ remotePortLow, remotePortHigh, address);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof LispAppDataAddress) {
+ LispAppDataAddress that = (LispAppDataAddress) obj;
+ return Objects.equals(protocol, that.protocol) &&
+ Objects.equals(ipTos, that.ipTos) &&
+ Objects.equals(localPortLow, that.localPortLow) &&
+ Objects.equals(localPortHigh, that.localPortHigh) &&
+ Objects.equals(remotePortLow, that.remotePortLow) &&
+ Objects.equals(remotePortHigh, that.remotePortHigh) &&
+ Objects.equals(address, that.address);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(type().toString())
+ .add("protocol", protocol)
+ .add("IP type of service", ipTos)
+ .add("low-ranged local port number", localPortLow)
+ .add("high-ranged local port number", localPortHigh)
+ .add("low-ranged remote port number", remotePortLow)
+ .add("high-ranged remote port number", remotePortHigh)
+ .add("address", address)
+ .toString();
+ }
+
+ /**
+ * A builder for building LispAppDataAddress.
+ */
+ public static final class Builder {
+ private byte protocol;
+ private int ipTos;
+ private short localPortLow;
+ private short localPortHigh;
+ private short remotePortLow;
+ private short remotePortHigh;
+ private MappingAddress address;
+
+ /**
+ * Sets protocol number.
+ *
+ * @param protocol protocol number
+ * @return Builder object
+ */
+ public Builder withProtocol(byte protocol) {
+ this.protocol = protocol;
+ return this;
+ }
+
+ /**
+ * Sets IP type of service.
+ *
+ * @param ipTos IP type of service
+ * @return Builder object
+ */
+ public Builder withIpTos(int ipTos) {
+ this.ipTos = ipTos;
+ return this;
+ }
+
+ /**
+ * Sets low-ranged local port number.
+ *
+ * @param localPortLow low-ranged local port number
+ * @return Builder object
+ */
+ public Builder withLocalPortLow(short localPortLow) {
+ this.localPortLow = localPortLow;
+ return this;
+ }
+
+ /**
+ * Sets high-ranged local port number.
+ *
+ * @param localPortHigh high-ranged local port number
+ * @return Builder object
+ */
+ public Builder withLocalPortHigh(short localPortHigh) {
+ this.localPortHigh = localPortHigh;
+ return this;
+ }
+
+ /**
+ * Sets low-ranged remote port number.
+ *
+ * @param remotePortLow low-ranged remote port number
+ * @return Builder object
+ */
+ public Builder withRemotePortLow(short remotePortLow) {
+ this.remotePortLow = remotePortLow;
+ return this;
+ }
+
+ /**
+ * Sets high-ranged remote port number.
+ *
+ * @param remotePortHigh high-ranged remote port number
+ * @return Builder object
+ */
+ public Builder withRemotePortHigh(short remotePortHigh) {
+ this.remotePortHigh = remotePortHigh;
+ return this;
+ }
+
+ /**
+ * Sets mapping address.
+ *
+ * @param address mapping address
+ * @return Builder object
+ */
+ public Builder withAddress(MappingAddress address) {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Builds LispAppDataLcafAddress instance.
+ *
+ * @return LispAddDataLcafAddress instance
+ */
+ public LispAppDataAddress build() {
+
+ return new LispAppDataAddress(protocol, ipTos, localPortLow,
+ localPortHigh, remotePortLow, remotePortHigh, address);
+ }
}
}
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAsAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAsAddress.java
index 4b1dfe9..a0480aa 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAsAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispAsAddress.java
@@ -16,27 +16,170 @@
package org.onosproject.drivers.lisp.extensions;
+import com.google.common.collect.Maps;
+import org.onlab.util.KryoNamespace;
+import org.onosproject.mapping.addresses.ASMappingAddress;
+import org.onosproject.mapping.addresses.DNMappingAddress;
+import org.onosproject.mapping.addresses.EthMappingAddress;
import org.onosproject.mapping.addresses.ExtensionMappingAddress;
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
+import org.onosproject.mapping.addresses.IPMappingAddress;
+import org.onosproject.mapping.addresses.MappingAddress;
import org.onosproject.net.flow.AbstractExtension;
+import org.onosproject.store.serializers.KryoNamespaces;
+
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.AS_ADDRESS;
/**
* Implementation of LISP Autonomous System (AS) address.
+ * When an AS number is stored in the LISP Mapping Database System for either
+ * policy or documentation reasons, it can be encoded in a LISP Canonical Address.
*/
-public class LispAsAddress extends AbstractExtension
+public final class LispAsAddress extends AbstractExtension
implements ExtensionMappingAddress {
+
+ private static final String AS_NUMBER = "asNumber";
+ private static final String ADDRESS = "address";
+
+ private int asNumber;
+ private MappingAddress address;
+
+ private final KryoNamespace appKryo = new KryoNamespace.Builder()
+ .register(KryoNamespaces.API)
+ .register(MappingAddress.class)
+ .register(MappingAddress.Type.class)
+ .register(IPMappingAddress.class)
+ .register(ASMappingAddress.class)
+ .register(DNMappingAddress.class)
+ .register(EthMappingAddress.class)
+ .build();
+
+ /**
+ * Default constructor.
+ */
+ public LispAsAddress() {
+ }
+
+ /**
+ * Creates an instance with initialized parameters.
+ *
+ * @param asNumber AS number
+ */
+ private LispAsAddress(int asNumber, MappingAddress address) {
+ this.asNumber = asNumber;
+ this.address = address;
+ }
+
+ /**
+ * Obtains AS number.
+ *
+ * @return AS number
+ */
+ public int getAsNumber() {
+ return asNumber;
+ }
+
+ /**
+ * Obtains mapping address.
+ *
+ * @return mapping address
+ */
+ public MappingAddress getAddress() {
+ return address;
+ }
+
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return AS_ADDRESS.type();
}
@Override
public byte[] serialize() {
- return new byte[0];
+ Map<String, Object> parameterMap = Maps.newHashMap();
+
+ parameterMap.put(AS_NUMBER, asNumber);
+ parameterMap.put(ADDRESS, address);
+ return appKryo.serialize(parameterMap);
}
@Override
public void deserialize(byte[] data) {
+ Map<String, Object> parameterMap = appKryo.deserialize(data);
+ this.asNumber = (int) parameterMap.get(AS_NUMBER);
+ this.address = (MappingAddress) parameterMap.get(ADDRESS);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(asNumber, address);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj instanceof LispAsAddress) {
+ final LispAsAddress other = (LispAsAddress) obj;
+ return Objects.equals(asNumber, other.asNumber) &&
+ Objects.equals(address, other.address);
+ }
+
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("AS number", asNumber)
+ .add("address", address)
+ .toString();
+ }
+
+ /**
+ * A builder for building LispAsAddress.
+ */
+ public static final class Builder {
+ private int asNumber;
+ private MappingAddress address;
+
+ /**
+ * Sets AS number.
+ *
+ * @param asNumber AS number
+ * @return Builder object
+ */
+ public Builder withAsNumber(int asNumber) {
+ this.asNumber = asNumber;
+ return this;
+ }
+
+ /**
+ * Sets mapping address.
+ *
+ * @param address mapping address
+ * @return Builder object
+ */
+ public Builder withAddress(MappingAddress address) {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Builds LispAsAddress instance.
+ *
+ * @return LispAsAddress instance
+ */
+ public LispAsAddress build() {
+
+ return new LispAsAddress(asNumber, address);
+ }
}
}
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispGcAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispGcAddress.java
index 48f4f4f..8e796be 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispGcAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispGcAddress.java
@@ -20,14 +20,20 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.GEO_COORDINATE_ADDRESS;
+
/**
* Implementation of LISP Geo Coordinate (GC) address.
+ * If an ETR desires to send a Map-Reply describing the Geo Coordinates for each
+ * locator in its locator-set, it can use the Geo Coordinate Type to convey
+ * physical location information.
*/
public class LispGcAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return GEO_COORDINATE_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispListAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispListAddress.java
index 3bc7e46..77beeee 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispListAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispListAddress.java
@@ -20,14 +20,20 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.LIST_ADDRESS;
+
/**
* Implementation of LISP list address.
+ * When header translation between IPv4 and IPv6 is desirable a LISP Canonical
+ * Address can use the AFI List Type to carry a variable number of AFIs in one
+ * LCAF AFI.
*/
public class LispListAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return LIST_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMulticastAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMulticastAddress.java
index fc3e03b..5bbda74 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMulticastAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMulticastAddress.java
@@ -20,14 +20,19 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.MULTICAST_ADDRESS;
+
/**
* Implementation of LISP multicast address.
+ * The intent of this type of unicast replication is to deliver packets to
+ * multiple ETRs at receiver LISP multicast sites.
*/
public class LispMulticastAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return MULTICAST_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNatAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNatAddress.java
index a21c83e..a71b684 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNatAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNatAddress.java
@@ -20,14 +20,19 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.NAT_ADDRESS;
+
/**
* Implementation of LISP Network Address Translation (NAT) address.
+ * When a LISP system is conveying global address and mapped port information
+ * when traversing through a NAT device, the NAT-Traversal Type is used.
*/
public class LispNatAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return NAT_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNonceAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNonceAddress.java
index b516913..747c5f6 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNonceAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispNonceAddress.java
@@ -20,14 +20,19 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.NONCE_ADDRESS;
+
/**
* Implementation of LISP nonce address.
+ * When a public PETR device wants to verify who is encapsulating to it, it can
+ * check for a specific nonce value in the LISP encapsulated packet.
*/
public class LispNonceAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return NONCE_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSecurityAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSecurityAddress.java
index 1f10205..c3d13f6 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSecurityAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSecurityAddress.java
@@ -20,6 +20,9 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.SECURITY_ADDRESS;
+
/**
* Implementation LISP security address.
*/
@@ -27,7 +30,7 @@
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return SECURITY_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSegmentAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSegmentAddress.java
index c48a80c..b251724 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSegmentAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSegmentAddress.java
@@ -20,14 +20,20 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.SECURITY_ADDRESS;
+
/**
* Implementation of LISP segment address.
+ * When multiple organizations inside of a LISP site are using private addresses
+ * [RFC1918] as EID-prefixes, their address spaces must remain segregated due
+ * to possible address duplication.
*/
public class LispSegmentAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return SECURITY_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSrcDstAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSrcDstAddress.java
index 5dc892a..1c1dee7 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSrcDstAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispSrcDstAddress.java
@@ -20,14 +20,20 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.SOURCE_DEST_ADDRESS;
+
/**
- * Implementation of LISP source and detination address.
+ * Implementation of LISP source and destination address.
+ * When both a source and destination address of a flow need consideration for
+ * different locator-sets, this 2-tuple key is used in EID fields in LISP
+ * control messages.
*/
public class LispSrcDstAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return SOURCE_DEST_ADDRESS.type();
}
@Override
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispTeAddress.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispTeAddress.java
index f5d892b..4415d30 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispTeAddress.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispTeAddress.java
@@ -20,14 +20,19 @@
import org.onosproject.mapping.addresses.ExtensionMappingAddressType;
import org.onosproject.net.flow.AbstractExtension;
+import static org.onosproject.mapping.addresses.ExtensionMappingAddressType
+ .ExtensionMappingAddressTypes.TRAFFIC_ENGINEERING_ADDRESS;
+
/**
* Implementation of LISP traffic engineering address.
+ * For a given EID lookup into the mapping database, this LCAF can be returned
+ * to provide a list of locators in an explicit re-encapsulation path.
*/
public final class LispTeAddress extends AbstractExtension
implements ExtensionMappingAddress {
@Override
public ExtensionMappingAddressType type() {
- return null;
+ return TRAFFIC_ENGINEERING_ADDRESS.type();
}
@Override