summaryrefslogtreecommitdiffstats
path: root/nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java')
-rw-r--r--nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/ifc/AbstractInterfaceNatCustomizer.java44
1 files changed, 35 insertions, 9 deletions
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);
}