// 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())
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).
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;
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()
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());
}
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> {
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;
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)
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)
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)
abstract Logger getLog();
- abstract boolean isExpectedNatType(final int isInside);
+ abstract boolean isExpectedNatType(final NatConfigFlags flags);
}
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;
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 1;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
}
@Nonnull
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;
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 0;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
}
@Nonnull
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;
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 1;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
}
@Nonnull
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;
}
@Override
- boolean isExpectedNatType(final int isInside) {
- return isInside == 0;
+ boolean isExpectedNatType(final NatConfigFlags flags) {
+ return flags.contains(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
}
@Nonnull
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;
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;
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;
}
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;
}
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;
}
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;
}
}
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;
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;
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) {
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();
}
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) {
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);
}
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;
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);
}
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);
}
import io.fd.jvpp.nat.dto.Nat64PoolAddrDetails;
import io.fd.jvpp.nat.dto.Nat64PoolAddrDetailsReplyDump;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.Ip4Address;
import java.util.Arrays;
import java.util.List;
import java.util.stream.LongStream;
Nat44AddressDetailsReplyDump replyDump = dumpReplyNat44Empty();
Nat44AddressDetails detailsOne = new Nat44AddressDetails();
- detailsOne.ipAddress = new byte[]{-64, -88, 44, 1};
+ detailsOne.ipAddress = new Ip4Address();
+ detailsOne.ipAddress.ip4Address = new byte[]{-64, -88, 44, 1};
Nat44AddressDetails detailsTwo = new Nat44AddressDetails();
- detailsTwo.ipAddress = new byte[]{-64, -88, 44, 2};
+ detailsTwo.ipAddress = new Ip4Address();
+ detailsTwo.ipAddress.ip4Address = new byte[]{-64, -88, 44, 2};
Nat44AddressDetails detailsThree = new Nat44AddressDetails();
- detailsThree.ipAddress = new byte[]{-64, -88, 44, 3};
+ detailsThree.ipAddress = new Ip4Address();
+ detailsThree.ipAddress.ip4Address = new byte[]{-64, -88, 44, 3};
replyDump.nat44AddressDetails = Arrays.asList(detailsOne, detailsTwo, detailsThree);
Nat64PoolAddrDetailsReplyDump replyDump = dumpReplyNat64Empty();
Nat64PoolAddrDetails detailsOne = new Nat64PoolAddrDetails();
- detailsOne.address = new byte[]{-64, -88, 64, 1};
+ detailsOne.address = new Ip4Address();
+ detailsOne.address.ip4Address = new byte[]{-64, -88, 64, 1};
Nat64PoolAddrDetails detailsTwo = new Nat64PoolAddrDetails();
- detailsTwo.address = new byte[]{-64, -88, 64, 2};
+ detailsTwo.address = new Ip4Address();
+ detailsTwo.address.ip4Address = new byte[]{-64, -88, 64, 2};
Nat64PoolAddrDetails detailsThree = new Nat64PoolAddrDetails();
- detailsThree.address = new byte[]{-64, -88, 64, 3};
+ detailsThree.address = new Ip4Address();
+ detailsThree.address.ip4Address = new byte[]{-64, -88, 64, 3};
replyDump.nat64PoolAddrDetails = Arrays.asList(detailsOne, detailsTwo, detailsThree);
import io.fd.jvpp.nat.dto.Nat44StaticMappingDetailsReplyDump;
import io.fd.jvpp.nat.dto.Nat64BibDetails;
import io.fd.jvpp.nat.dto.Nat64BibDetailsReplyDump;
+import io.fd.jvpp.nat.types.Ip4Address;
+import io.fd.jvpp.nat.types.Ip6Address;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
Nat44StaticMappingDetailsReplyDump replyDump = new Nat44StaticMappingDetailsReplyDump();
Nat44StaticMappingDetails detailsOne = new Nat44StaticMappingDetails();
- detailsOne.addrOnly = 1;
- detailsOne.localIpAddress = new byte[]{-64, -88, 2, 1};
+ detailsOne.flags = new NatConfigFlags();
+ detailsOne.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY);
+ detailsOne.localIpAddress = new Ip4Address();
+ detailsOne.localIpAddress.ip4Address = new byte[]{-64, -88, 2, 1};
detailsOne.localPort = 1234;
- detailsOne.externalIpAddress = new byte[]{-64, -88, 2, 8};
+ detailsOne.externalIpAddress = new Ip4Address();
+ detailsOne.externalIpAddress.ip4Address = new byte[]{-64, -88, 2, 8};
detailsOne.externalPort = 5874;
detailsOne.vrfId = NatInstanceCustomizer.DEFAULT_VRF_ID.getId().byteValue();
Nat44StaticMappingDetails detailsTwo = new Nat44StaticMappingDetails();
- detailsTwo.addrOnly = 0;
- detailsTwo.localIpAddress = new byte[]{-64, -88, 2, 3};
+ detailsTwo.flags = new NatConfigFlags();
+ detailsTwo.localIpAddress = new Ip4Address();
+ detailsTwo.localIpAddress.ip4Address = new byte[]{-64, -88, 2, 3};
detailsTwo.localPort = (short) 60000;
- detailsTwo.externalIpAddress = new byte[]{-64, -88, 2, 5};
+ detailsTwo.externalIpAddress = new Ip4Address();
+ detailsTwo.externalIpAddress.ip4Address = new byte[]{-64, -88, 2, 5};
detailsTwo.externalPort = (short) 65535;
detailsTwo.vrfId = 2;
Nat44StaticMappingDetails detailsThree = new Nat44StaticMappingDetails();
- detailsThree.addrOnly = 0;
- detailsThree.localIpAddress = new byte[]{-64, -88, 2, 2};
+ detailsThree.flags = new NatConfigFlags();
+ detailsThree.localIpAddress = new Ip4Address();
+ detailsThree.localIpAddress.ip4Address = new byte[]{-64, -88, 2, 2};
detailsThree.localPort = 1274;
- detailsThree.externalIpAddress = new byte[]{-64, -88, 3, 8};
+ detailsThree.externalIpAddress = new Ip4Address();
+ detailsThree.externalIpAddress.ip4Address = new byte[]{-64, -88, 3, 8};
detailsThree.externalPort = 6874;
detailsThree.vrfId = NatInstanceCustomizer.DEFAULT_VRF_ID.getId().byteValue();
Nat64BibDetailsReplyDump replyDump = new Nat64BibDetailsReplyDump();
Nat64BibDetails detailsOne = new Nat64BibDetails();
- detailsOne.isStatic = 1;
- detailsOne.iAddr =
+ detailsOne.flags = new NatConfigFlags();
+ detailsOne.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_STATIC);
+ detailsOne.iAddr = new Ip6Address();
+ detailsOne.iAddr.ip6Address =
new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03,
0x70, 0x73, 0x01};
detailsOne.iPort = 1234;
- detailsOne.oAddr = new byte[]{-64, -88, 64, 1};
+ detailsOne.oAddr = new Ip4Address();
+ detailsOne.oAddr.ip4Address = new byte[]{-64, -88, 64, 1};
detailsOne.oPort = 5874;
detailsOne.vrfId = NatInstanceCustomizer.DEFAULT_VRF_ID.getId().byteValue();
Nat64BibDetails detailsTwo = new Nat64BibDetails();
- detailsTwo.isStatic = 0;
- detailsTwo.iAddr =
+ detailsTwo.flags = new NatConfigFlags();
+ detailsTwo.iAddr = new Ip6Address();
+ detailsTwo.iAddr.ip6Address =
new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03,
0x70, 0x73, 0x02};
detailsTwo.iPort = (short) 60000;
- detailsTwo.oAddr = new byte[]{-64, -88, 64, 2};
+ detailsTwo.oAddr = new Ip4Address();
+ detailsTwo.oAddr.ip4Address = new byte[]{-64, -88, 64, 2};
detailsTwo.oPort = (short) 65535;
detailsTwo.vrfId = 2;
Nat64BibDetails detailsThree = new Nat64BibDetails();
- detailsThree.isStatic = 1;
- detailsThree.iAddr =
+ detailsThree.flags = new NatConfigFlags();
+ detailsThree.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_STATIC);
+ detailsThree.iAddr = new Ip6Address();
+ detailsThree.iAddr.ip6Address =
new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03,
0x70, 0x73, 0x03};
detailsThree.iPort = 1274;
- detailsThree.oAddr = new byte[]{-64, -88, 64, 3};
+ detailsThree.oAddr = new Ip4Address();
+ detailsThree.oAddr.ip4Address = new byte[]{-64, -88, 64, 3};
detailsThree.oPort = 6874;
detailsThree.vrfId = NatInstanceCustomizer.DEFAULT_VRF_ID.getId().byteValue();
import io.fd.jvpp.nat.dto.Nat64PrefixDetails;
import io.fd.jvpp.nat.dto.Nat64PrefixDetailsReplyDump;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.Ip6Address;
+import io.fd.jvpp.nat.types.Ip6Prefix;
import java.util.List;
import org.junit.Test;
import org.mockito.Mock;
final Nat64PrefixDetailsReplyDump reply = new Nat64PrefixDetailsReplyDump();
final Nat64PrefixDetails prefix0 = new Nat64PrefixDetails();
prefix0.vrfId = 0;
- prefix0.prefix = new byte[]{0, 0x64, (byte) 0xff, (byte) 0x9b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
- prefix0.prefixLen = (byte) 96;
+ prefix0.prefix = new Ip6Prefix();
+ prefix0.prefix.prefix = new Ip6Address();
+ prefix0.prefix.prefix.ip6Address =
+ new byte[]{0, 0x64, (byte) 0xff, (byte) 0x9b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
+ prefix0.prefix.len = (byte) 96;
reply.nat64PrefixDetails.add(prefix0);
final Nat64PrefixDetails prefix1 = new Nat64PrefixDetails();
prefix1.vrfId = 1;
- prefix1.prefix = new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
- prefix1.prefixLen = (byte) 128;
+ prefix1.prefix = new Ip6Prefix();
+ prefix1.prefix.prefix = new Ip6Address();
+ prefix1.prefix.prefix.ip6Address = new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
+ prefix1.prefix.len = (byte) 128;
reply.nat64PrefixDetails.add(prefix1);
return reply;
}
import io.fd.jvpp.nat.dto.Nat44InterfaceOutputFeatureDetailsReplyDump;
import io.fd.jvpp.nat.dto.Nat64InterfaceDetailsReplyDump;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.InterfaceIndex;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import org.junit.Test;
import org.mockito.Mock;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816.NatInterfaceStateAugmentation;
private void mockPostRoutingDump() {
final Nat44InterfaceOutputFeatureDetailsReplyDump details = new Nat44InterfaceOutputFeatureDetailsReplyDump();
final Nat44InterfaceOutputFeatureDetails detail = new Nat44InterfaceOutputFeatureDetails();
- detail.isInside = 1;
- detail.swIfIndex = IFC_IDX;
+ detail.flags = new NatConfigFlags();
+ detail.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ detail.swIfIndex = new InterfaceIndex();
+ detail.swIfIndex.interfaceindex = IFC_IDX;
details.nat44InterfaceOutputFeatureDetails = Lists.newArrayList(detail);
when(jvppNat.nat44InterfaceOutputFeatureDump(any())).thenReturn(future(details));
}
public void testPresencePreRouting() throws Exception {
final Nat44InterfaceDetailsReplyDump details = new Nat44InterfaceDetailsReplyDump();
final Nat44InterfaceDetails detail = new Nat44InterfaceDetails();
- detail.isInside = 1;
- detail.swIfIndex = IFC_IDX;
+ detail.flags = new NatConfigFlags();
+ detail.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ detail.swIfIndex = new InterfaceIndex();
+ detail.swIfIndex.interfaceindex = IFC_IDX;
details.nat44InterfaceDetails = Lists.newArrayList(detail);
when(jvppNat.nat44InterfaceDump(any())).thenReturn(future(details));
import io.fd.jvpp.nat.dto.Nat44InterfaceOutputFeatureDetailsReplyDump;
import io.fd.jvpp.nat.dto.Nat64InterfaceDetailsReplyDump;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.InterfaceIndex;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import org.junit.Test;
import org.mockito.Mock;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.NatBuilder;
private void mockPostRoutingDump() {
final Nat44InterfaceOutputFeatureDetailsReplyDump details = new Nat44InterfaceOutputFeatureDetailsReplyDump();
final Nat44InterfaceOutputFeatureDetails detail = new Nat44InterfaceOutputFeatureDetails();
- detail.isInside = 0;
- detail.swIfIndex = IFC_IDX;
+ detail.flags = new NatConfigFlags();
+ detail.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ detail.swIfIndex = new InterfaceIndex();
+ detail.swIfIndex.interfaceindex = IFC_IDX;
details.nat44InterfaceOutputFeatureDetails = Lists.newArrayList(detail);
when(jvppNat.nat44InterfaceOutputFeatureDump(any())).thenReturn(future(details));
}
public void testPresencePreRouting() throws Exception {
final Nat44InterfaceDetailsReplyDump details = new Nat44InterfaceDetailsReplyDump();
final Nat44InterfaceDetails detail = new Nat44InterfaceDetails();
- detail.isInside = 0;
- detail.swIfIndex = IFC_IDX;
+ detail.flags = new NatConfigFlags();
+ detail.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ detail.swIfIndex = new InterfaceIndex();
+ detail.swIfIndex.interfaceindex = IFC_IDX;
details.nat44InterfaceDetails = Lists.newArrayList(detail);
when(jvppNat.nat44InterfaceDump(any())).thenReturn(future(details));
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
-import java.util.Optional;
import com.google.common.collect.Lists;
import io.fd.hc2vpp.common.translate.util.Ipv4Translator;
import io.fd.honeycomb.translate.MappingContext;
import io.fd.jvpp.nat.dto.Nat44StaticMappingDetails;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.nat.context.rev161214.mapping.entry.context.attributes.nat.mapping.entry.context.nat.instance.MappingTableBuilder;
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.Ipv4AddressNoZone;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.instance.mapping.table.MappingEntry;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.instance.mapping.table.MappingEntryBuilder;
private Nat44StaticMappingDetails getDetails(final long vrfId, final String localIp, final String externIp) {
final Nat44StaticMappingDetails nat44StaticMappingDetails = new Nat44StaticMappingDetails();
nat44StaticMappingDetails.vrfId = (int) vrfId;
- nat44StaticMappingDetails.addrOnly = 1;
- nat44StaticMappingDetails.localIpAddress = ipv4AddressNoZoneToArray(localIp);
- nat44StaticMappingDetails.externalIpAddress = ipv4AddressNoZoneToArray(externIp);
+ nat44StaticMappingDetails.flags = new NatConfigFlags();
+ nat44StaticMappingDetails.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY);
+ nat44StaticMappingDetails.localIpAddress = ipv4AddressNoZoneToNatIp4Address(new Ipv4AddressNoZone(localIp));
+ nat44StaticMappingDetails.externalIpAddress = ipv4AddressNoZoneToNatIp4Address(new Ipv4AddressNoZone(externIp));
return nat44StaticMappingDetails;
}
import io.fd.jvpp.nat.dto.Nat64AddDelPoolAddrRange;
import io.fd.jvpp.nat.dto.Nat64AddDelPoolAddrRangeReply;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.Ip4Address;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
private Nat44AddDelAddressRange getExpectedRequestNat44(final boolean isAdd) {
final Nat44AddDelAddressRange expectedRequest = new Nat44AddDelAddressRange();
- expectedRequest.isAdd = booleanToByte(isAdd);
- expectedRequest.firstIpAddress = new byte[] {(byte) 192, (byte) 168, 1, 0};
- expectedRequest.lastIpAddress = new byte[] {(byte) 192, (byte) 168, 1, (byte) 255};
+ expectedRequest.isAdd = isAdd;
+ expectedRequest.firstIpAddress = new Ip4Address();
+ expectedRequest.firstIpAddress.ip4Address = new byte[]{(byte) 192, (byte) 168, 1, 0};
+ expectedRequest.lastIpAddress = new Ip4Address();
+ expectedRequest.lastIpAddress.ip4Address = new byte[]{(byte) 192, (byte) 168, 1, (byte) 255};
return expectedRequest;
}
private Nat64AddDelPoolAddrRange getExpectedRequestNat64(final boolean isAdd) {
final Nat64AddDelPoolAddrRange expectedRequest = new Nat64AddDelPoolAddrRange();
- expectedRequest.isAdd = booleanToByte(isAdd);
- expectedRequest.startAddr = new byte[] {(byte) 192, (byte) 168, 1, 0};
- expectedRequest.endAddr = new byte[] {(byte) 192, (byte) 168, 1, (byte) 255};
+ expectedRequest.isAdd = isAdd;
+ expectedRequest.startAddr = new Ip4Address();
+ expectedRequest.startAddr.ip4Address = new byte[]{(byte) 192, (byte) 168, 1, 0};
+ expectedRequest.endAddr = new Ip4Address();
+ expectedRequest.endAddr.ip4Address = new byte[]{(byte) 192, (byte) 168, 1, (byte) 255};
return expectedRequest;
}
}
\ No newline at end of file
import io.fd.jvpp.nat.dto.Nat64AddDelStaticBib;
import io.fd.jvpp.nat.dto.Nat64AddDelStaticBibReply;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.InterfaceIndex;
+import io.fd.jvpp.nat.types.Ip4Address;
+import io.fd.jvpp.nat.types.Ip6Address;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
throws WriteFailedException {
customizer.writeCurrentAttributes(IID, extractMappingEntry(data), writeContext);
final Nat44AddDelStaticMapping expectedRequest = getExpectedNat44Request();
- expectedRequest.isAdd = 1;
+ expectedRequest.isAdd = true;
verify(jvppNat).nat44AddDelStaticMapping(expectedRequest);
}
throws WriteFailedException {
customizer.writeCurrentAttributes(IID, extractMappingEntry(data), writeContext);
final Nat64AddDelStaticBib expectedRequest = getExpectedNat64Request();
- expectedRequest.isAdd = 1;
+ expectedRequest.isAdd = true;
verify(jvppNat).nat64AddDelStaticBib(expectedRequest);
}
final Nat64AddDelStaticBib expectedDeleteRequest = getExpectedNat64Request();
verify(jvppNat).nat64AddDelStaticBib(expectedDeleteRequest);
final Nat64AddDelStaticBib expectedUpdateRequest = getExpectedNat64UpdateRequest();
- expectedUpdateRequest.isAdd = 1;
+ expectedUpdateRequest.isAdd = true;
verify(jvppNat).nat64AddDelStaticBib(expectedUpdateRequest);
}
private static Nat44AddDelStaticMapping getExpectedNat44Request() {
final Nat44AddDelStaticMapping expectedRequest = new Nat44AddDelStaticMapping();
- expectedRequest.addrOnly = 1;
+ expectedRequest.flags = new NatConfigFlags();
+ expectedRequest.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY);
expectedRequest.protocol = 17; // udp
expectedRequest.vrfId = (int) NAT_INSTANCE_ID;
- expectedRequest.externalSwIfIndex = -1;
- expectedRequest.localIpAddress = new byte[] {(byte) 192, (byte) 168, 1, 87};
- expectedRequest.externalIpAddress = new byte[] {45, 1, 5, 7};
+ expectedRequest.externalSwIfIndex = new InterfaceIndex();
+ expectedRequest.externalSwIfIndex.interfaceindex = -1;
+ expectedRequest.localIpAddress = new Ip4Address();
+ expectedRequest.localIpAddress.ip4Address = new byte[]{(byte) 192, (byte) 168, 1, 87};
+ expectedRequest.externalIpAddress = new Ip4Address();
+ expectedRequest.externalIpAddress.ip4Address = new byte[]{45, 1, 5, 7};
return expectedRequest;
}
final Nat64AddDelStaticBib expectedRequest = new Nat64AddDelStaticBib();
expectedRequest.proto = 58; // icmp v6
expectedRequest.vrfId = (int) NAT_INSTANCE_ID;
- expectedRequest.iAddr = new byte[] {0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03, 0x70, 0x73, 0x33};
+ expectedRequest.iAddr = new Ip6Address();
+ expectedRequest.iAddr.ip6Address =
+ new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03,
+ 0x70, 0x73, 0x33};
expectedRequest.iPort = 123;
- expectedRequest.oAddr = new byte[] {10, 1, 1, 3};
+ expectedRequest.oAddr = new Ip4Address();
+ expectedRequest.oAddr.ip4Address = new byte[]{10, 1, 1, 3};
expectedRequest.oPort = 456;
return expectedRequest;
}
private static Nat44AddDelStaticMapping getExpectedNat44UpdateRequest() {
final Nat44AddDelStaticMapping expectedRequest = new Nat44AddDelStaticMapping();
- expectedRequest.addrOnly = 1;
+ expectedRequest.flags = new NatConfigFlags();
+ expectedRequest.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_ADDR_ONLY);
expectedRequest.protocol = 17; // udp
expectedRequest.vrfId = (int) NAT_INSTANCE_ID;
- expectedRequest.externalSwIfIndex = -1;
- expectedRequest.localIpAddress = new byte[] {(byte) 192, (byte) 168, 1, 86};
- expectedRequest.externalIpAddress = new byte[] {45, 1, 5, 6};
+ expectedRequest.externalSwIfIndex = new InterfaceIndex();
+ expectedRequest.externalSwIfIndex.interfaceindex = -1;
+ expectedRequest.localIpAddress = new Ip4Address();
+ expectedRequest.localIpAddress.ip4Address = new byte[]{(byte) 192, (byte) 168, 1, 86};
+ expectedRequest.externalIpAddress = new Ip4Address();
+ expectedRequest.externalIpAddress.ip4Address = new byte[]{45, 1, 5, 6};
return expectedRequest;
}
final Nat64AddDelStaticBib expectedRequest = new Nat64AddDelStaticBib();
expectedRequest.proto = 58; // icmp v6
expectedRequest.vrfId = (int) NAT_INSTANCE_ID;
- expectedRequest.iAddr = new byte[] {0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03, 0x70, 0x73, 0x34};
- expectedRequest.oAddr = new byte[] {10, 1, 1, 4};
+ expectedRequest.iAddr = new Ip6Address();
+ expectedRequest.iAddr.ip6Address =
+ new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, (byte) 0x85, (byte) 0xa3, 0, 0, 0, 0, (byte) 0x8a, 0x2e, 0x03,
+ 0x70, 0x73, 0x34};
+ expectedRequest.oAddr = new Ip4Address();
+ expectedRequest.oAddr.ip4Address = new byte[]{10, 1, 1, 4};
expectedRequest.iPort = 1234;
expectedRequest.oPort = 5678;
return expectedRequest;
import io.fd.jvpp.nat.dto.Nat64AddDelPrefix;
import io.fd.jvpp.nat.dto.Nat64AddDelPrefixReply;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.Ip6Address;
+import io.fd.jvpp.nat.types.Ip6Prefix;
import org.junit.Test;
import org.mockito.Mock;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
private Nat64AddDelPrefix expectedRequest(final boolean isAdd) {
final Nat64AddDelPrefix request = new Nat64AddDelPrefix();
- request.isAdd = booleanToByte(isAdd);
+ request.isAdd = isAdd;
request.vrfId = (int) VRF_ID;
- request.prefix = new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- request.prefixLen = 32;
+ request.prefix = new Ip6Prefix();
+ request.prefix.prefix = new Ip6Address();
+ request.prefix.prefix.ip6Address =
+ new byte[]{0x20, 0x01, 0x0d, (byte) 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ request.prefix.len = 32;
return request;
}
}
\ No newline at end of file
import io.fd.jvpp.nat.dto.Nat64AddDelInterface;
import io.fd.jvpp.nat.dto.Nat64AddDelInterfaceReply;
import io.fd.jvpp.nat.future.FutureJVppNatFacade;
+import io.fd.jvpp.nat.types.InterfaceIndex;
+import io.fd.jvpp.nat.types.NatConfigFlags;
import org.junit.Test;
import org.mockito.Mock;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816.InterfaceNatVppFeatureAttributes;
import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.nat.Inbound;
+import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang._interface.nat.rev170816._interface.nat.attributes.nat.Outbound;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
private Nat44InterfaceAddDelFeature expectedPreRoutingNat44Request(final D data, boolean isAdd) {
Nat44InterfaceAddDelFeature request = new Nat44InterfaceAddDelFeature();
- request.isInside = booleanToByte(data instanceof Inbound);
- request.swIfIndex = IFACE_ID;
- request.isAdd = booleanToByte(isAdd);
+ request.flags = new NatConfigFlags();
+ if (data instanceof Inbound) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ } else if (data instanceof Outbound) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ }
+ request.swIfIndex = new InterfaceIndex();
+ request.swIfIndex.interfaceindex = IFACE_ID;
+ request.isAdd = isAdd;
return request;
}
private Nat64AddDelInterface expectedPreRoutingNat64Request(final D data, boolean isAdd) {
Nat64AddDelInterface request = new Nat64AddDelInterface();
- request.isInside = booleanToByte(data instanceof Inbound);
- request.swIfIndex = IFACE_ID;
- request.isAdd = booleanToByte(isAdd);
+ request.flags = new NatConfigFlags();
+ if (data instanceof Inbound) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ } else if (data instanceof Outbound) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ }
+ request.swIfIndex = new InterfaceIndex();
+ request.swIfIndex.interfaceindex = IFACE_ID;
+ request.isAdd = isAdd;
return request;
}
private Nat44InterfaceAddDelOutputFeature expectedPostRoutingRequest(final D data, boolean isAdd) {
Nat44InterfaceAddDelOutputFeature request = new Nat44InterfaceAddDelOutputFeature();
- request.isInside = booleanToByte(data instanceof Inbound);
- request.swIfIndex = IFACE_ID;
- request.isAdd = booleanToByte(isAdd);
+ request.flags = new NatConfigFlags();
+ if (data instanceof Inbound) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_INSIDE);
+ } else if (data instanceof Outbound) {
+ request.flags.add(NatConfigFlags.NatConfigFlagsOptions.NAT_IS_OUTSIDE);
+ }
+ request.swIfIndex = new InterfaceIndex();
+ request.swIfIndex.interfaceindex = IFACE_ID;
+ request.isAdd = isAdd;
return request;
}
<groupId>io.fd.jvpp</groupId>
<artifactId>jvpp-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.fd.jvpp</groupId>
+ <artifactId>jvpp-nat</artifactId>
+ <version>${jvpp.version}</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal.model</groupId>
<artifactId>ietf-inet-types-2013-07-15</artifactId>
import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.Arrays;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
return retval;
}
+ /**
+ * Creates {@link io.fd.jvpp.nat.types.Ip4Address} address from address part of {@link Ipv4Prefix}
+ *
+ * @return {@link io.fd.jvpp.nat.types.Ip4Address}
+ */
+ default io.fd.jvpp.nat.types.Ip4Address ipv4AddressPrefixToNatIp4Address(@Nonnull final Ipv4Prefix ipv4Prefix) {
+ checkNotNull(ipv4Prefix, "Cannot convert null prefix");
+
+ io.fd.jvpp.nat.types.Ip4Address address = new io.fd.jvpp.nat.types.Ip4Address();
+ address.ip4Address = ipv4AddressPrefixToArray(ipv4Prefix);
+
+ return address;
+ }
+
/**
* Extracts {@link Ipv4Prefix} prefix
*/
return ipv4AddressNoZoneToArray(ipv4Addr.getValue());
}
+ /**
+ * Transform Ipv4 address to a {@link io.fd.jvpp.nat.types.Ip4Address} acceptable by VPP.
+ *
+ * @return {@link io.fd.jvpp.nat.types.Ip4Address}
+ */
+ default io.fd.jvpp.nat.types.Ip4Address ipv4AddressNoZoneToNatIp4Address(final Ipv4AddressNoZone ipv4Addr) {
+ io.fd.jvpp.nat.types.Ip4Address ip4Address = new io.fd.jvpp.nat.types.Ip4Address();
+ ip4Address.ip4Address = ipv4AddressNoZoneToArray(ipv4Addr.getValue());
+ return ip4Address;
+ }
+
/**
* Transform Ipv4 address to a Ip4Address acceptable by VPP.
*
new Ipv6Address(ipv6Prefix.getValue().substring(0, ipv6Prefix.getValue().indexOf('/')))));
}
+ /**
+ * Creates {@link io.fd.jvpp.nat.types.Ip6Address} from address part of {@link Ipv6Prefix}
+ *
+ * @return {@link io.fd.jvpp.nat.types.Ip6Address}
+ */
+ default io.fd.jvpp.nat.types.Ip6Address ipv6AddressPrefixToNatIp6Address(@Nonnull final Ipv6Prefix ipv6Prefix) {
+ checkNotNull(ipv6Prefix, "Cannot convert null prefix");
+
+ io.fd.jvpp.nat.types.Ip6Address ip6Address = new io.fd.jvpp.nat.types.Ip6Address();
+ ip6Address.ip6Address = ipv6AddressPrefixToArray(ipv6Prefix);
+ return ip6Address;
+ }
+
/**
* Transforms {@link Prefix} from {@link Ipv6Prefix}
* @param ipv6Prefix prefix to be translated
return prefix;
}
+ /**
+ * Creates {@link io.fd.jvpp.nat.types.Ip6Prefix} from {@link Ipv6Prefix}
+ *
+ * @param ipv6Prefix prefix to be translated
+ * @return Vpp {@link io.fd.jvpp.nat.types.Ip6Prefix} from {@link Ipv6Prefix}
+ */
+ default io.fd.jvpp.nat.types.Ip6Prefix ipv6AddressPrefixToNatIp6Prefix(@Nonnull final Ipv6Prefix ipv6Prefix) {
+ checkNotNull(ipv6Prefix, "Cannot convert null prefix");
+ io.fd.jvpp.nat.types.Ip6Prefix prefix = new io.fd.jvpp.nat.types.Ip6Prefix();
+ prefix.prefix = new io.fd.jvpp.nat.types.Ip6Address();
+ prefix.prefix.ip6Address = ipv6AddressPrefixToArray(ipv6Prefix);
+ prefix.len = extractPrefix(ipv6Prefix);
+ return prefix;
+ }
+
/**
* Extracts {@link Ipv6Prefix} prefix
*/