diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2016-09-20 08:58:39 +0200 |
---|---|---|
committer | Maros Marsalek <mmarsale@cisco.com> | 2016-09-20 11:08:21 +0000 |
commit | 21ded20ef88dcc3b55abf646bcbfdc05a0565474 (patch) | |
tree | e421d82474bd16f36d8a5ef0620968e4f5190ec8 | |
parent | 09b4c56064e358e406391115514861aa1a7149e5 (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.java | 21 |
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 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<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 { |