summaryrefslogtreecommitdiffstats
path: root/nat/nat2vpp/src/main/java/io/fd/hc2vpp
diff options
context:
space:
mode:
Diffstat (limited to 'nat/nat2vpp/src/main/java/io/fd/hc2vpp')
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ExternalIpPoolCustomizer.java4
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/MappingEntryCustomizer.java13
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/Nat64PrefixesCustomizer.java2
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/AbstractInterfaceNatCustomizer.java15
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceInboundNatCustomizer.java5
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceOutboundNatCustomizer.java5
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceInboundNatCustomizer.java5
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceOutboundNatCustomizer.java5
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/util/MappingEntryContext.java18
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ExternalIpPoolCustomizer.java12
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizer.java27
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/Nat64PrefixesCustomizer.java5
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java44
13 files changed, 99 insertions, 61 deletions
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ExternalIpPoolCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ExternalIpPoolCustomizer.java
index 7a97a68d1..574d05862 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ExternalIpPoolCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ExternalIpPoolCustomizer.java
@@ -102,7 +102,7 @@ final class ExternalIpPoolCustomizer implements
// Uses ID<->address mapping as defined by getAllIds (nat44 mappings go before nat64):
if (poolId < nat44PoolCount) {
final Nat44AddressDetails detail = nat44Details.get(Math.toIntExact(poolId));
- readPoolIp(builder, detail.ipAddress);
+ readPoolIp(builder, detail.ipAddress.ip4Address);
setPoolType(builder, NatPoolType.Nat44);
} else {
final List<Nat64PoolAddrDetails> nat64Details = nat64DumpMgr.getDump(id, ctx.getModificationCache())
@@ -111,7 +111,7 @@ final class ExternalIpPoolCustomizer implements
final int nat64PoolPosition = Math.toIntExact(poolId) - nat44PoolCount;
if (nat64PoolPosition < nat64PoolCount) {
final Nat64PoolAddrDetails detail = nat64Details.get(nat64PoolPosition);
- readPoolIp(builder, detail.address);
+ readPoolIp(builder, detail.address.ip4Address);
setPoolType(builder, NatPoolType.Nat64);
} else {
// Address pool for given ID is missing (legal state).
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/MappingEntryCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/MappingEntryCustomizer.java
index 1ae452183..70dc10b44 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/MappingEntryCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/MappingEntryCustomizer.java
@@ -33,6 +33,7 @@ import io.fd.jvpp.nat.dto.Nat64BibDetails;
import io.fd.jvpp.nat.dto.Nat64BibDetailsReplyDump;
import io.fd.jvpp.nat.dto.Nat64BibDump;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -114,10 +115,10 @@ final class MappingEntryCustomizer implements Ipv4Translator, Ipv6Translator,
builder.setIndex((long) index);
builder.setType(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.MappingEntry.Type.Static);
- builder.setExternalSrcAddress(new IpPrefix(toIpv4Prefix(detail.externalIpAddress, 32)));
- builder.setInternalSrcAddress(new IpPrefix(toIpv4Prefix(detail.localIpAddress, 32)));
+ builder.setExternalSrcAddress(new IpPrefix(toIpv4Prefix(detail.externalIpAddress.ip4Address, 32)));
+ builder.setInternalSrcAddress(new IpPrefix(toIpv4Prefix(detail.localIpAddress.ip4Address, 32)));
- if (detail.addrOnly == 0) {
+ if (!detail.flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY)) {
builder.setExternalSrcPort(new ExternalSrcPortBuilder()
.setStartPortNumber(new PortNumber(Short.toUnsignedInt(detail.externalPort))).build());
builder.setInternalSrcPort(new InternalSrcPortBuilder()
@@ -128,15 +129,15 @@ final class MappingEntryCustomizer implements Ipv4Translator, Ipv6Translator,
private void readNat64Entry(@Nonnull final MappingEntryBuilder builder,
final int index, final Nat64BibDetails detail) {
builder.setIndex((long) index);
- if (detail.isStatic == 1) {
+ if (detail.flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_STATIC)) {
builder.setType(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.MappingEntry.Type.Static);
} else {
builder.setType(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.MappingEntry.Type.DynamicImplicit);
}
- builder.setExternalSrcAddress(new IpPrefix(toIpv4Prefix(detail.oAddr,32 )));
- builder.setInternalSrcAddress(new IpPrefix(toIpv6Prefix(detail.iAddr, 128)));
+ builder.setExternalSrcAddress(new IpPrefix(toIpv4Prefix(detail.oAddr.ip4Address, 32)));
+ builder.setInternalSrcAddress(new IpPrefix(toIpv6Prefix(detail.iAddr.ip6Address, 128)));
builder.setExternalSrcPort(new ExternalSrcPortBuilder()
.setStartPortNumber(new PortNumber(Short.toUnsignedInt(detail.oPort))).build());
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/Nat64PrefixesCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/Nat64PrefixesCustomizer.java
index 6e955ea64..468008c46 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/Nat64PrefixesCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/Nat64PrefixesCustomizer.java
@@ -111,7 +111,7 @@ final class Nat64PrefixesCustomizer
}
private Ipv6Prefix readPrefix(final Nat64PrefixDetails details) {
- return toIpv6Prefix(details.prefix, UnsignedBytes.toInt(details.prefixLen));
+ return toIpv6Prefix(details.prefix.prefix.ip6Address, UnsignedBytes.toInt(details.prefix.len));
}
private final class Nat64PrefixesExecutor implements EntityDumpExecutor<Map<Long, Nat64PrefixDetails>, Void> {
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/AbstractInterfaceNatCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/AbstractInterfaceNatCustomizer.java
index 2d8e4cce5..8ce475b38 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/AbstractInterfaceNatCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/AbstractInterfaceNatCustomizer.java
@@ -31,6 +31,7 @@ import io.fd.jvpp.nat.dto.Nat44InterfaceOutputFeatureDump;
import io.fd.jvpp.nat.dto.Nat64InterfaceDetailsReplyDump;
import io.fd.jvpp.nat.dto.Nat64InterfaceDump;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import java.util.Optional;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
@@ -96,8 +97,8 @@ abstract class AbstractInterfaceNatCustomizer<C extends DataObject, B extends Bu
preRoutingNat44DumpMgr.getDump(id, ctx.getModificationCache());
dump.orElse(new Nat44InterfaceDetailsReplyDump()).nat44InterfaceDetails.stream()
- .filter(natIfcDetail -> natIfcDetail.swIfIndex == index)
- .filter(natIfcDetail -> isExpectedNatType(natIfcDetail.isInside))
+ .filter(natIfcDetail -> natIfcDetail.swIfIndex.interfaceindex == index)
+ .filter(natIfcDetail -> isExpectedNatType(natIfcDetail.flags))
.findAny()
.ifPresent(natIfcDetail -> vppAttributesBuilder.enableNat44(builder));
// do not modify builder is feature is absent (inbound/outbound are presence containers)
@@ -109,8 +110,8 @@ abstract class AbstractInterfaceNatCustomizer<C extends DataObject, B extends Bu
preRoutingNat64DumpMgr.getDump(id, ctx.getModificationCache());
dump.orElse(new Nat64InterfaceDetailsReplyDump()).nat64InterfaceDetails.stream()
- .filter(natIfcDetail -> natIfcDetail.swIfIndex == index)
- .filter(natIfcDetail -> isExpectedNatType(natIfcDetail.isInside))
+ .filter(natIfcDetail -> natIfcDetail.swIfIndex.interfaceindex == index)
+ .filter(natIfcDetail -> isExpectedNatType(natIfcDetail.flags))
.findAny()
.ifPresent(natIfcDetail -> vppAttributesBuilder.enableNat64(builder));
// do not modify builder is feature is absent (inbound/outbound are presence containers)
@@ -123,8 +124,8 @@ abstract class AbstractInterfaceNatCustomizer<C extends DataObject, B extends Bu
dump.orElse(new Nat44InterfaceOutputFeatureDetailsReplyDump()).nat44InterfaceOutputFeatureDetails
.stream()
- .filter(natIfcDetail -> natIfcDetail.swIfIndex == index)
- .filter(natIfcDetail -> isExpectedNatType(natIfcDetail.isInside))
+ .filter(natIfcDetail -> natIfcDetail.swIfIndex.interfaceindex == index)
+ .filter(natIfcDetail -> isExpectedNatType(natIfcDetail.flags))
.findAny()
.ifPresent(natIfcDetail -> vppAttributesBuilder.enablePostRouting(builder));
// do not modify builder is feature is absent (inbound/outbound are presence containers)
@@ -136,5 +137,5 @@ abstract class AbstractInterfaceNatCustomizer<C extends DataObject, B extends Bu
abstract Logger getLog();
- abstract boolean isExpectedNatType(final int isInside);
+ abstract boolean isExpectedNatType(final NatConfigFlags flags);
}
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceInboundNatCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceInboundNatCustomizer.java
index 76a20a94c..c0dde6516 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceInboundNatCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceInboundNatCustomizer.java
@@ -20,6 +20,7 @@ import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.spi.read.Initialized;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816.NatInterfaceAugmentation;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.Nat;
@@ -50,8 +51,8 @@ final class InterfaceInboundNatCustomizer extends AbstractInterfaceNatCustomizer
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 1;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
}
@Nonnull
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceOutboundNatCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceOutboundNatCustomizer.java
index 68c0cb1ce..3196cda10 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceOutboundNatCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/InterfaceOutboundNatCustomizer.java
@@ -20,6 +20,7 @@ import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.spi.read.Initialized;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816.NatInterfaceAugmentation;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.Nat;
@@ -50,8 +51,8 @@ final class InterfaceOutboundNatCustomizer extends AbstractInterfaceNatCustomize
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 0;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
}
@Nonnull
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceInboundNatCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceInboundNatCustomizer.java
index 0ca344419..c9f4dc888 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceInboundNatCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceInboundNatCustomizer.java
@@ -20,6 +20,7 @@ import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.spi.read.Initialized;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.Nat;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.NatBuilder;
@@ -54,8 +55,8 @@ final class SubInterfaceInboundNatCustomizer extends AbstractSubInterfaceNatCust
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 1;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
}
@Nonnull
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceOutboundNatCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceOutboundNatCustomizer.java
index 92d829987..8485cded9 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceOutboundNatCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/read/ifc/SubInterfaceOutboundNatCustomizer.java
@@ -20,6 +20,7 @@ import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.spi.read.Initialized;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.Nat;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.NatBuilder;
@@ -54,8 +55,8 @@ final class SubInterfaceOutboundNatCustomizer extends AbstractSubInterfaceNatCus
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 0;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
}
@Nonnull
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/util/MappingEntryContext.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/util/MappingEntryContext.java
index aed383b10..67e29ccb2 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/util/MappingEntryContext.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/util/MappingEntryContext.java
@@ -19,7 +19,6 @@ package io.fd.hc2vpp.nat.util;
import static com.google.common.base.Preconditions.checkArgument;
import com.google.common.annotations.VisibleForTesting;
-import java.util.Optional;
import io.fd.hc2vpp.common.translate.util.Ipv4Translator;
import io.fd.hc2vpp.common.translate.util.Ipv6Translator;
import io.fd.honeycomb.translate.MappingContext;
@@ -28,6 +27,7 @@ import io.fd.jvpp.nat.dto.Nat64BibDetails;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import java.util.Optional;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.naming.context.rev160513.Contexts;
@@ -100,24 +100,24 @@ public class MappingEntryContext implements Ipv4Translator, Ipv6Translator {
private MappingEntryKey entryToKey(final Nat44StaticMappingDetails entry) {
// Only IPv4
return new MappingEntryKey(
- new IpPrefix(new Ipv4Prefix(toIpv4Prefix(entry.externalIpAddress,32))),
- new IpPrefix(new Ipv4Prefix(toIpv4Prefix(entry.localIpAddress, 32))));
+ new IpPrefix(new Ipv4Prefix(toIpv4Prefix(entry.externalIpAddress.ip4Address, 32))),
+ new IpPrefix(new Ipv4Prefix(toIpv4Prefix(entry.localIpAddress.ip4Address, 32))));
}
private MappingEntryKey entryToKey(final Nat64BibDetails entry) {
return new MappingEntryKey(
- new IpPrefix(new Ipv4Prefix(toIpv4Prefix(entry.oAddr, 32))),
- new IpPrefix(new Ipv6Prefix(toIpv6Prefix(entry.iAddr, 128))));
+ new IpPrefix(new Ipv4Prefix(toIpv4Prefix(entry.oAddr.ip4Address, 32))),
+ new IpPrefix(new Ipv6Prefix(toIpv6Prefix(entry.iAddr.ip6Address, 128))));
}
private boolean equalEntries(final Nat44StaticMappingDetails detail, final MappingEntry ctxMappingEntry) {
// Only IPv4
- final IpPrefix internalAddrFromDetails = new IpPrefix(toIpv4Prefix(detail.localIpAddress, 32));
+ final IpPrefix internalAddrFromDetails = new IpPrefix(toIpv4Prefix(detail.localIpAddress.ip4Address, 32));
if (!ctxMappingEntry.getInternal().equals(internalAddrFromDetails)) {
return false;
}
// Only IPv4
- final IpPrefix externalAddrFromDetails = new IpPrefix(toIpv4Prefix(detail.externalIpAddress, 32));
+ final IpPrefix externalAddrFromDetails = new IpPrefix(toIpv4Prefix(detail.externalIpAddress.ip4Address, 32));
if (!ctxMappingEntry.getExternal().equals(externalAddrFromDetails)) {
return false;
}
@@ -126,12 +126,12 @@ public class MappingEntryContext implements Ipv4Translator, Ipv6Translator {
private boolean equalEntries(final Nat64BibDetails detail, final MappingEntry ctxMappingEntry) {
// Only IPv6
- final IpPrefix internalAddrFromDetails = new IpPrefix(toIpv6Prefix(detail.iAddr, 128));
+ final IpPrefix internalAddrFromDetails = new IpPrefix(toIpv6Prefix(detail.iAddr.ip6Address, 128));
if (!ctxMappingEntry.getInternal().equals(internalAddrFromDetails)) {
return false;
}
// Only IPv4
- final IpPrefix externalAddrFromDetails = new IpPrefix(toIpv4Prefix(detail.oAddr, 32));
+ final IpPrefix externalAddrFromDetails = new IpPrefix(toIpv4Prefix(detail.oAddr.ip4Address, 32));
if (!ctxMappingEntry.getExternal().equals(externalAddrFromDetails)) {
return false;
}
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ExternalIpPoolCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ExternalIpPoolCustomizer.java
index 38d2f5a60..8b9d9dd41 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ExternalIpPoolCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ExternalIpPoolCustomizer.java
@@ -89,9 +89,9 @@ final class ExternalIpPoolCustomizer implements ListWriterCustomizer<ExternalIpA
final Nat44AddDelAddressRange request = new Nat44AddDelAddressRange();
final Ipv4AddressRange range = Ipv4AddressRange.fromPrefix(externalIpPool);
LOG.trace("Handling NAT44 address range: {}", range);
- request.isAdd = booleanToByte(isAdd);
- request.firstIpAddress = ipv4AddressNoZoneToArray(range.getStart());
- request.lastIpAddress = ipv4AddressNoZoneToArray(range.getEnd());
+ request.isAdd = isAdd;
+ request.firstIpAddress = ipv4AddressNoZoneToNatIp4Address(range.getStart());
+ request.lastIpAddress = ipv4AddressNoZoneToNatIp4Address(range.getEnd());
return request;
}
@@ -99,9 +99,9 @@ final class ExternalIpPoolCustomizer implements ListWriterCustomizer<ExternalIpA
final Nat64AddDelPoolAddrRange request = new Nat64AddDelPoolAddrRange();
final Ipv4AddressRange range = Ipv4AddressRange.fromPrefix(externalIpPool);
LOG.trace("Handling NAT64 address range: {}", range);
- request.isAdd = booleanToByte(isAdd);
- request.startAddr = ipv4AddressNoZoneToArray(range.getStart());
- request.endAddr = ipv4AddressNoZoneToArray(range.getEnd());
+ request.isAdd = isAdd;
+ request.startAddr = ipv4AddressNoZoneToNatIp4Address(range.getStart());
+ request.endAddr = ipv4AddressNoZoneToNatIp4Address(range.getEnd());
return request;
}
}
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizer.java
index 9c8da8c84..bf7811852 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizer.java
@@ -16,7 +16,6 @@
package io.fd.hc2vpp.nat.write;
-import java.util.Optional;
import io.fd.hc2vpp.common.translate.util.ByteDataTranslator;
import io.fd.hc2vpp.common.translate.util.Ipv4Translator;
import io.fd.hc2vpp.common.translate.util.Ipv6Translator;
@@ -28,6 +27,9 @@ import io.fd.honeycomb.translate.write.WriteFailedException;
import io.fd.jvpp.nat.dto.Nat44AddDelStaticMapping;
import io.fd.jvpp.nat.dto.Nat64AddDelStaticBib;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.InterfaceIndex;
+import io.fd.jvpp.nat.types.NatConfigFlags;
+import java.util.Optional;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
@@ -133,15 +135,20 @@ final class MappingEntryCustomizer implements ListWriterCustomizer<MappingEntry,
final boolean isAdd)
throws WriteFailedException.CreateFailedException {
final Nat44AddDelStaticMapping request = new Nat44AddDelStaticMapping();
- request.isAdd = booleanToByte(isAdd);
+ request.isAdd = isAdd;
// VPP uses int, model long
request.vrfId = natInstanceId.intValue();
final Ipv4Prefix internalAddress = mappingEntry.getInternalSrcAddress().getIpv4Prefix();
- request.addrOnly = 1;
- request.localIpAddress = ipv4AddressPrefixToArray(internalAddress);
- request.externalIpAddress = ipv4AddressPrefixToArray(mappingEntry.getExternalSrcAddress().getIpv4Prefix());
- request.externalSwIfIndex = -1; // external ip address is ignored if externalSwIfIndex is given
+ if (request.flags == null) {
+ request.flags = new NatConfigFlags();
+ }
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY);
+ request.localIpAddress = ipv4AddressPrefixToNatIp4Address(internalAddress);
+ request.externalIpAddress =
+ ipv4AddressPrefixToNatIp4Address(mappingEntry.getExternalSrcAddress().getIpv4Prefix());
+ request.externalSwIfIndex = new InterfaceIndex();
+ request.externalSwIfIndex.interfaceindex = -1; // external ip address is ignored if externalSwIfIndex is given
request.protocol = -1;
final Short protocol = mappingEntry.getTransportProtocol();
if (protocol != null) {
@@ -151,7 +158,7 @@ final class MappingEntryCustomizer implements ListWriterCustomizer<MappingEntry,
final Integer internalPortNumber = getPortNumber(mappingEntry.getInternalSrcPort());
final Integer externalPortNumber = getPortNumber(mappingEntry.getExternalSrcPort());
if (internalPortNumber != null && externalPortNumber != null) {
- request.addrOnly = 0;
+ request.flags.remove(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY);
request.localPort = internalPortNumber.shortValue();
request.externalPort = externalPortNumber.shortValue();
}
@@ -164,13 +171,13 @@ final class MappingEntryCustomizer implements ListWriterCustomizer<MappingEntry,
final boolean isAdd)
throws WriteFailedException.CreateFailedException {
final Nat64AddDelStaticBib request = new Nat64AddDelStaticBib();
- request.isAdd = booleanToByte(isAdd);
+ request.isAdd = isAdd;
// VPP uses int, model long
request.vrfId = natInstanceId.intValue();
final Ipv6Prefix internalAddress = mappingEntry.getInternalSrcAddress().getIpv6Prefix();
- request.iAddr = ipv6AddressPrefixToArray(internalAddress);
- request.oAddr = ipv4AddressPrefixToArray(mappingEntry.getExternalSrcAddress().getIpv4Prefix());
+ request.iAddr = ipv6AddressPrefixToNatIp6Address(internalAddress);
+ request.oAddr = ipv4AddressPrefixToNatIp4Address(mappingEntry.getExternalSrcAddress().getIpv4Prefix());
request.proto = -1;
final Short protocol = mappingEntry.getTransportProtocol();
if (protocol != null) {
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/Nat64PrefixesCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/Nat64PrefixesCustomizer.java
index df8af8550..a9082c0c8 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/Nat64PrefixesCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/Nat64PrefixesCustomizer.java
@@ -76,9 +76,8 @@ final class Nat64PrefixesCustomizer
final Ipv6Prefix nat64Prefix = data.getNat64Prefix();
final Nat64AddDelPrefix request = new Nat64AddDelPrefix();
- request.prefix = ipv6AddressPrefixToArray(nat64Prefix);
- request.prefixLen = extractPrefix(nat64Prefix);
- request.isAdd = booleanToByte(isAdd);
+ request.prefix = ipv6AddressPrefixToNatIp6Prefix(nat64Prefix);
+ request.isAdd = isAdd;
request.vrfId = vrfId;
getReplyForWrite(jvppNat.nat64AddDelPrefix(request).toCompletableFuture(), id);
}
diff --git a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java
index 336b17a6f..380de89a3 100644
--- a/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java
+++ b/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java
@@ -28,6 +28,8 @@ import io.fd.jvpp.nat.dto.Nat44InterfaceAddDelFeature;
import io.fd.jvpp.nat.dto.Nat44InterfaceAddDelOutputFeature;
import io.fd.jvpp.nat.dto.Nat64AddDelInterface;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.InterfaceIndex;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816.InterfaceNatVppFeatureAttributes;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
@@ -89,9 +91,17 @@ abstract class AbstractInterfaceNatCustomizer<D extends InterfaceNatVppFeatureAt
throws WriteFailedException {
checkArgument(!isNat64Supported(natAttributes), "Post routing Nat64 is not supported by VPP");
final Nat44InterfaceAddDelOutputFeature request = new Nat44InterfaceAddDelOutputFeature();
- request.isAdd = booleanToByte(enable);
- request.isInside = getType().isInside;
- request.swIfIndex = ifcIndex;
+ request.isAdd = enable;
+ if (request.flags == null) {
+ request.flags = new NatConfigFlags();
+ }
+ if (getType() == NatType.INBOUND) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ } else if (getType() == NatType.OUTBOUND) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ }
+ request.swIfIndex = new InterfaceIndex();
+ request.swIfIndex.interfaceindex = ifcIndex;
getReplyForWrite(jvppNat.nat44InterfaceAddDelOutputFeature(request).toCompletableFuture(), id);
}
@@ -114,18 +124,34 @@ abstract class AbstractInterfaceNatCustomizer<D extends InterfaceNatVppFeatureAt
private void preRoutingNat44(@Nonnull final InstanceIdentifier<D> id, final int ifcIndex, final boolean enable)
throws WriteFailedException {
final Nat44InterfaceAddDelFeature request = new Nat44InterfaceAddDelFeature();
- request.isAdd = booleanToByte(enable);
- request.isInside = getType().isInside;
- request.swIfIndex = ifcIndex;
+ request.isAdd = enable;
+ if (request.flags == null) {
+ request.flags = new NatConfigFlags();
+ }
+ if (getType() == NatType.INBOUND) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ } else if (getType() == NatType.OUTBOUND) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ }
+ request.swIfIndex = new InterfaceIndex();
+ request.swIfIndex.interfaceindex = ifcIndex;
getReplyForWrite(jvppNat.nat44InterfaceAddDelFeature(request).toCompletableFuture(), id);
}
private void preRoutingNat64(@Nonnull final InstanceIdentifier<D> id, final int ifcIndex, final boolean enable)
throws WriteFailedException {
final Nat64AddDelInterface request = new Nat64AddDelInterface();
- request.isAdd = booleanToByte(enable);
- request.isInside = getType().isInside;
- request.swIfIndex = ifcIndex;
+ request.isAdd = enable;
+ if (request.flags == null) {
+ request.flags = new NatConfigFlags();
+ }
+ if (getType() == NatType.INBOUND) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ } else if (getType() == NatType.OUTBOUND) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ }
+ request.swIfIndex = new InterfaceIndex();
+ request.swIfIndex.interfaceindex = ifcIndex;
getReplyForWrite(jvppNat.nat64AddDelInterface(request).toCompletableFuture(), id);
}