summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2016-09-20 08:58:39 +0200
committerMaros Marsalek <mmarsale@cisco.com>2016-09-20 11:08:21 +0000
commit21ded20ef88dcc3b55abf646bcbfdc05a0565474 (patch)
treee421d82474bd16f36d8a5ef0620968e4f5190ec8
parent09b4c56064e358e406391115514861aa1a7149e5 (diff)
Fix ietf-acl delete
Cancels classify tables assignment for interface before classify table removal. Change-Id: I8f1ec1f43dac89f64af306f02786166f713743f8 Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/IetfAClWriter.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/IetfAClWriter.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/IetfAClWriter.java
index a25ddac..965e76f 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/IetfAClWriter.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/IetfAClWriter.java
@@ -97,8 +97,11 @@ public final class IetfAClWriter {
final CompletionStage<ClassifyTableByInterfaceReply> cs = jvpp.classifyTableByInterface(request);
final ClassifyTableByInterfaceReply reply = TranslateUtils.getReplyForWrite(cs.toCompletableFuture(), id);
- // We remove all ACL-related classify tables for given interface (we assume we are the only classify table
- // manager)
+ // We unassign and remove all ACL-related classify tables for given interface (we assume we are the only
+ // classify table manager)
+
+ unassignClassifyTables(id, reply);
+
removeClassifyTable(id, reply.l2TableId);
removeClassifyTable(id, reply.ip4TableId);
removeClassifyTable(id, reply.ip6TableId);
@@ -107,6 +110,20 @@ public final class IetfAClWriter {
}
}
+ private void unassignClassifyTables(@Nonnull final InstanceIdentifier<?> id,
+ final ClassifyTableByInterfaceReply currentState)
+ throws VppBaseCallException, WriteTimeoutException {
+ final InputAclSetInterface request = new InputAclSetInterface();
+ request.isAdd = 0;
+ request.swIfIndex = currentState.swIfIndex;
+ request.l2TableIndex = currentState.l2TableId;
+ request.ip4TableIndex = currentState.ip4TableId;
+ request.ip6TableIndex = currentState.ip6TableId;
+ final CompletionStage<InputAclSetInterfaceReply> inputAclSetInterfaceReplyCompletionStage =
+ jvpp.inputAclSetInterface(request);
+ TranslateUtils.getReplyForWrite(inputAclSetInterfaceReplyCompletionStage.toCompletableFuture(), id);
+ }
+
private void removeClassifyTable(@Nonnull final InstanceIdentifier<?> id, final int tableIndex)
throws VppBaseCallException, WriteTimeoutException {