summaryrefslogtreecommitdiffstats
path: root/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read')
-rwxr-xr-xlisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/AdjacencyCustomizer.java12
-rwxr-xr-xlisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/LocalMappingCustomizer.java7
-rwxr-xr-xlisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/RemoteMappingCustomizer.java7
-rwxr-xr-xlisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/dump/executor/params/MappingsDumpParams.java34
-rw-r--r--lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingProducer.java16
-rw-r--r--lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingReader.java6
6 files changed, 54 insertions, 28 deletions
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/AdjacencyCustomizer.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/AdjacencyCustomizer.java
index 72ed941f5..afbe2f3bf 100755
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/AdjacencyCustomizer.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/AdjacencyCustomizer.java
@@ -145,9 +145,11 @@ public class AdjacencyCustomizer extends FutureJVppCustomizer
builder.setId(currentAdjacencyId)
.setKey(new AdjacencyKey(currentAdjacencyId))
.setLocalEid(getArrayAsLocalEid(
- MappingsDumpParams.EidType.valueOf(currentAdjacency.eidType), currentAdjacency.leid, vni))
+ MappingsDumpParams.EidType.valueOf(currentAdjacency.eidType), currentAdjacency.leid,
+ currentAdjacency.leidPrefixLen, vni))
.setRemoteEid(getArrayAsRemoteEid(
- MappingsDumpParams.EidType.valueOf(currentAdjacency.eidType), currentAdjacency.reid, vni));
+ MappingsDumpParams.EidType.valueOf(currentAdjacency.eidType), currentAdjacency.reid,
+ currentAdjacency.reidPrefixLen, vni));
}
private EntityDumpExecutor<OneAdjacenciesGetReply, AdjacencyDumpParams> createExecutor() {
@@ -199,9 +201,11 @@ public class AdjacencyCustomizer extends FutureJVppCustomizer
final MappingContext mappingContext) {
return new EidIdentificatorPairBuilder()
.setLocalEidId(new MappingId(localMappingContext.getId(getArrayAsEidLocal(
- MappingsDumpParams.EidType.valueOf(data.eidType), data.leid, vni), mappingContext)))
+ MappingsDumpParams.EidType.valueOf(data.eidType), data.leid, data.leidPrefixLen, vni),
+ mappingContext)))
.setRemoteEidId(new MappingId(remoteMappingContext.getId(getArrayAsEidLocal(
- MappingsDumpParams.EidType.valueOf(data.eidType), data.reid, vni), mappingContext)))
+ MappingsDumpParams.EidType.valueOf(data.eidType), data.reid, data.reidPrefixLen, vni),
+ mappingContext)))
.build();
}
}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/LocalMappingCustomizer.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/LocalMappingCustomizer.java
index ff71d9c00..81409296d 100755
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/LocalMappingCustomizer.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/LocalMappingCustomizer.java
@@ -105,7 +105,6 @@ public class LocalMappingCustomizer
final long vni = id.firstKeyOf(VniTable.class).getVirtualNetworkIdentifier();
- final String localMappingId = id.firstKeyOf(LocalMapping.class).getId().getValue();
final Eid eid = localMappingContext.getEid(mappingId, ctx.getMappingContext());
//Requesting for specific mapping dump,only from local mappings with specified eid/vni/eid type
@@ -135,7 +134,7 @@ public class LocalMappingCustomizer
"No Locator Set name found for index %s", details.locatorSetIndex);
builder.setLocatorSet(locatorSetContext.getName(details.locatorSetIndex, ctx.getMappingContext()));
builder.setKey(new LocalMappingKey(new MappingId(id.firstKeyOf(LocalMapping.class).getId())));
- builder.setEid(getArrayAsEidLocal(valueOf(details.eidType), details.eid, details.vni));
+ builder.setEid(getArrayAsEidLocal(valueOf(details.eidType), details.eid, details.eidPrefixLen, details.vni));
if (details.key != null) {
builder.setHmacKey(
@@ -149,7 +148,7 @@ public class LocalMappingCustomizer
}
private Address getAddressFromDumpDetail(final OneEidTableDetails detail) {
- return getArrayAsEidLocal(valueOf(detail.eidType), detail.eid, detail.vni).getAddress();
+ return getArrayAsEidLocal(valueOf(detail.eidType), detail.eid, detail.eidPrefixLen, detail.vni).getAddress();
}
@Override
@@ -184,7 +183,7 @@ public class LocalMappingCustomizer
return replyOptional.get().oneEidTableDetails.stream()
.filter(a -> a.vni == vni)
.filter(subtableFilterForLocalMappings(id))
- .map(detail -> getArrayAsEidLocal(valueOf(detail.eidType), detail.eid, detail.vni))
+ .map(detail -> getArrayAsEidLocal(valueOf(detail.eidType), detail.eid, detail.eidPrefixLen, detail.vni))
.map(localEid -> localMappingContext.getId(localEid, context.getMappingContext()))
.map(MappingId::new)
.map(LocalMappingKey::new)
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/RemoteMappingCustomizer.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/RemoteMappingCustomizer.java
index 2ba9eb831..04b89a59f 100755
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/RemoteMappingCustomizer.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/RemoteMappingCustomizer.java
@@ -148,7 +148,6 @@ public class RemoteMappingCustomizer extends FutureJVppCustomizer
"No mapping stored for id %s", mappingId);
final long vni = id.firstKeyOf(VniTable.class).getVirtualNetworkIdentifier();
- final String remoteMappingId = id.firstKeyOf(RemoteMapping.class).getId().getValue();
final Eid eid = copyEid(remoteMappingContext.getEid(mappingId, ctx.getMappingContext()));
final MappingsDumpParams dumpParams = new MappingsDumpParamsBuilder()
.setVni(Long.valueOf(vni).intValue())
@@ -172,11 +171,11 @@ public class RemoteMappingCustomizer extends FutureJVppCustomizer
OneEidTableDetails details = replyOptional.get().oneEidTableDetails.stream()
.filter(subtableFilterForRemoteMappings(id))
.filter(a -> compareAddresses(eid.getAddress(),
- getArrayAsEidLocal(valueOf(a.eidType), a.eid, a.vni).getAddress()))
+ getArrayAsEidLocal(valueOf(a.eidType), a.eid, a.eidPrefixLen, a.vni).getAddress()))
.collect(
RWUtils.singleItemCollector());
- builder.setEid(getArrayAsEidRemote(valueOf(details.eidType), details.eid, details.vni));
+ builder.setEid(getArrayAsEidRemote(valueOf(details.eidType), details.eid, details.eidPrefixLen, details.vni));
builder.setKey(new RemoteMappingKey(new MappingId(id.firstKeyOf(RemoteMapping.class).getId())));
builder.setTtl(resolveTtl(details.ttl));
builder.setAuthoritative(
@@ -217,7 +216,7 @@ public class RemoteMappingCustomizer extends FutureJVppCustomizer
.stream()
.filter(a -> a.vni == vni)
.filter(subtableFilterForRemoteMappings(id))
- .map(detail -> getArrayAsEidRemote(valueOf(detail.eidType), detail.eid, detail.vni))
+ .map(detail -> getArrayAsEidRemote(valueOf(detail.eidType), detail.eid, detail.eidPrefixLen, detail.vni))
.map(remoteEid -> remoteMappingContext.getId(remoteEid, context.getMappingContext()))
.map(MappingId::new)
.map(RemoteMappingKey::new)
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/dump/executor/params/MappingsDumpParams.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/dump/executor/params/MappingsDumpParams.java
index 6b422f503..3c440668d 100755
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/dump/executor/params/MappingsDumpParams.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/dump/executor/params/MappingsDumpParams.java
@@ -16,7 +16,9 @@
package io.fd.hc2vpp.lisp.translate.read.dump.executor.params;
+import com.google.common.collect.ImmutableMap;
import java.util.Arrays;
+import java.util.Map;
/**
* Parameters for executing dump of mappings
@@ -82,15 +84,27 @@ public final class MappingsDumpParams {
public enum EidType {
IPV4(0),
IPV6(1),
- MAC(2);
-
+ MAC(2),
+ IPV4_PREFIX(3),
+ IPV6_PREFIX(4);
+
+ /**
+ * From vpp api perspective, ipv4 is the same as ipv4-prefix, it differs just in prefix value.
+ * Respectively for ipv6/ipv6-prefix
+ */
+ private static final Map<EidType, Integer> VPP_EID_TYPE_REGISTER = ImmutableMap.of(
+ IPV4, 0, IPV6, 1, MAC, 2, IPV4_PREFIX, 0, IPV6_PREFIX, 1);
+
+ /**
+ * This value should be use just for our logic, do not use it to bind vpp requests
+ */
private final int value;
private EidType(final int value) {
this.value = value;
}
- public static final EidType valueOf(int value) {
+ public static EidType valueOf(int value) {
switch (value) {
case 0:
return IPV4;
@@ -98,13 +112,17 @@ public final class MappingsDumpParams {
return IPV6;
case 2:
return MAC;
+ case 3:
+ return IPV4_PREFIX;
+ case 4:
+ return IPV6_PREFIX;
default:
throw new IllegalArgumentException("Illegal value");
}
}
- public final int getValue() {
- return this.value;
+ public final int getVppTypeBinding() {
+ return VPP_EID_TYPE_REGISTER.get(this);
}
}
@@ -150,10 +168,6 @@ public final class MappingsDumpParams {
private byte[] eid;
private byte filter;
- public static final MappingsDumpParamsBuilder newInstance() {
- return new MappingsDumpParamsBuilder();
- }
-
public MappingsDumpParamsBuilder setEidSet(final QuantityType quantityType) {
this.eidSet = (byte) quantityType.getValue();
return this;
@@ -170,7 +184,7 @@ public final class MappingsDumpParams {
}
public MappingsDumpParamsBuilder setEidType(final EidType eidType) {
- this.eidType = (byte) eidType.getValue();
+ this.eidType = (byte) eidType.getVppTypeBinding();
return this;
}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingProducer.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingProducer.java
index c9694c7a6..bceae832e 100644
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingProducer.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingProducer.java
@@ -16,10 +16,14 @@
package io.fd.hc2vpp.lisp.translate.read.trait;
+import com.google.common.collect.ImmutableSet;
import io.fd.honeycomb.translate.write.WriteFailedException;
+import java.util.Set;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.dp.subtable.grouping.local.mappings.LocalMapping;
@@ -33,15 +37,21 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
*/
public interface MappingProducer {
+ Set<Class<? extends LispAddressFamily>> VRF_ALLOWED_ADDRESS_TYPES = ImmutableSet.of(
+ Ipv4Afi.class,
+ Ipv6Afi.class,
+ Ipv4PrefixAfi.class,
+ Ipv6PrefixAfi.class);
+
/**
- * Checks whether provided {@link LocalMapping} can be written under subtree idenfied by {@link InstanceIdentifier}
+ * Checks whether provided {@link LocalMapping} can be written under subtree identified by {@link InstanceIdentifier}
*/
default void checkAllowedCombination(@Nonnull final InstanceIdentifier<LocalMapping> identifier,
@Nonnull final LocalMapping data) throws WriteFailedException {
final Class<? extends LispAddressFamily> eidAddressType = data.getEid().getAddressType();
if (identifier.firstIdentifierOf(VrfSubtable.class) != null) {
- if (Ipv4Afi.class != eidAddressType && Ipv6Afi.class != eidAddressType) {
+ if (!VRF_ALLOWED_ADDRESS_TYPES.contains(eidAddressType)) {
throw new WriteFailedException.CreateFailedException(identifier, data,
new IllegalArgumentException("Only Ipv4/Ipv6 eid's are allowed for Vrf Subtable"));
}
@@ -58,7 +68,7 @@ public interface MappingProducer {
final Class<? extends LispAddressFamily> eidAddressType = data.getEid().getAddressType();
if (identifier.firstIdentifierOf(VrfSubtable.class) != null) {
- if (Ipv4Afi.class != eidAddressType && Ipv6Afi.class != eidAddressType) {
+ if (!VRF_ALLOWED_ADDRESS_TYPES.contains(eidAddressType)) {
throw new WriteFailedException.CreateFailedException(identifier, data,
new IllegalArgumentException("Only Ipv4/Ipv6 eid's are allowed for Vrf Subtable"));
}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingReader.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingReader.java
index bad719d01..993a6451c 100644
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingReader.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/read/trait/MappingReader.java
@@ -37,15 +37,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- * Trait providing predicates to filter mappings to respective subtables
+ * Trait providing predicates to filter mappings to respective sub-tables
*/
public interface MappingReader extends JvppReplyConsumer {
Predicate<OneEidTableDetails> BRIDGE_DOMAIN_MAPPINGS_ONLY =
- (OneEidTableDetails detail) -> detail.eidType == MAC.getValue();
+ (OneEidTableDetails detail) -> detail.eidType == MAC.getVppTypeBinding();
Predicate<OneEidTableDetails> VRF_MAPPINGS_ONLY =
- (OneEidTableDetails detail) -> detail.eidType == IPV4.getValue() || detail.eidType == IPV6.getValue();
+ (OneEidTableDetails detail) -> detail.eidType == IPV4.getVppTypeBinding() || detail.eidType == IPV6.getVppTypeBinding();
default Predicate<OneEidTableDetails> subtableFilterForLocalMappings(
@Nonnull final InstanceIdentifier<LocalMapping> identifier) {