Forbid delete of default NAT instance 44/11944/1
authorMarek Gradzki <[email protected]>
Fri, 20 Apr 2018 05:02:03 +0000 (07:02 +0200)
committerMarek Gradzki <[email protected]>
Fri, 20 Apr 2018 06:14:29 +0000 (06:14 +0000)
NAT instances are mapped to VPP's VRFs.
Default NAT instance (id=0) is mapped to default VRF,
which is allways present in VPP.

This patch forbids deleteion of default instance
to be consistent with VPP behaviour
and NAT instance reader implementation.

Change-Id: I71aa6986395e4ba67baaa75d90905b450434aca4
Signed-off-by: Marek Gradzki <[email protected]>
nat/nat2vpp/src/main/java/io/fd/hc2vpp/nat/write/NatInstaceCustomizer.java

index fa5cfa8..8e56730 100644 (file)
@@ -42,5 +42,12 @@ final class NatInstaceCustomizer implements ListWriterCustomizer<NatInstance, Na
                                         @Nonnull final NatInstance dataBefore, @Nonnull final WriteContext writeContext)
             throws WriteFailedException {
         LOG.trace("Deleting nat-instance: {}", id);
+
+        // For consistency with reader, forbid removing default NAT instance:
+        final Long vrfId = id.firstKeyOf(NatInstance.class).getId();
+        if (vrfId == 0) {
+            throw new WriteFailedException.DeleteFailedException(id,
+                new UnsupportedOperationException("Removing default NAT instance (vrf=0) is not supported."));
+        }
     }
 }