From 21ded20ef88dcc3b55abf646bcbfdc05a0565474 Mon Sep 17 00:00:00 2001 From: Marek Gradzki Date: Tue, 20 Sep 2016 08:58:39 +0200 Subject: Fix ietf-acl delete Cancels classify tables assignment for interface before classify table removal. Change-Id: I8f1ec1f43dac89f64af306f02786166f713743f8 Signed-off-by: Marek Gradzki --- .../v3po/interfaces/acl/IetfAClWriter.java | 21 +++++++++++++++++++-- 1 file 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 a25ddac6c..965e76f99 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 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 inputAclSetInterfaceReplyCompletionStage = + jvpp.inputAclSetInterface(request); + TranslateUtils.getReplyForWrite(inputAclSetInterfaceReplyCompletionStage.toCompletableFuture(), id); + } + private void removeClassifyTable(@Nonnull final InstanceIdentifier id, final int tableIndex) throws VppBaseCallException, WriteTimeoutException { -- cgit 1.2.3-korg