summaryrefslogtreecommitdiffstats
path: root/acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java')
-rw-r--r--acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java45
1 files changed, 27 insertions, 18 deletions
diff --git a/acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java b/acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java
index 1fecc6c5b..eae4bab4e 100644
--- a/acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java
+++ b/acl/acl-impl/src/main/java/io/fd/hc2vpp/acl/util/acl/AclWriter.java
@@ -16,9 +16,9 @@
package io.fd.hc2vpp.acl.util.acl;
+import io.fd.hc2vpp.acl.util.AclContextManager;
import io.fd.hc2vpp.acl.util.ace.AceConverter;
import io.fd.hc2vpp.common.translate.util.JvppReplyConsumer;
-import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.honeycomb.translate.MappingContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
import io.fd.vpp.jvpp.acl.dto.AclAddReplace;
@@ -28,8 +28,10 @@ import io.fd.vpp.jvpp.acl.dto.MacipAclAdd;
import io.fd.vpp.jvpp.acl.dto.MacipAclAddReply;
import io.fd.vpp.jvpp.acl.dto.MacipAclDel;
import io.fd.vpp.jvpp.acl.future.FutureJVppAclFacade;
+import java.util.List;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.Acl;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.Ace;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
@@ -41,84 +43,91 @@ public interface AclWriter extends AclDataExtractor, AceConverter, JvppReplyCons
default void addStandardAcl(@Nonnull final FutureJVppAclFacade futureFacade,
@Nonnull final InstanceIdentifier<Acl> id, @Nonnull final Acl acl,
- @Nonnull final NamingContext standardAclContext,
+ @Nonnull final AclContextManager standardAclContext,
@Nonnull final MappingContext mappingContext) throws WriteFailedException {
final AclAddReplace request = new AclAddReplace();
request.tag = getAclNameAsBytes(acl);
request.aclIndex = ACL_INDEX_CREATE_NEW;
- request.r = convertToStandardAclRules(getAces(acl));
+
+ final List<Ace> aces = getAces(acl);
+ request.r = toStandardAclRules(aces);
request.count = request.r.length;
final AclAddReplaceReply reply =
getReplyForWrite(futureFacade.aclAddReplace(request).toCompletableFuture(), id);
// maps new acl to returned index
- standardAclContext.addName(reply.aclIndex, acl.getAclName(), mappingContext);
+ standardAclContext.addAcl(reply.aclIndex, acl.getAclName(), aces, mappingContext);
}
// according to vpp team, this was tested extensively, and should work
default void updateStandardAcl(@Nonnull final FutureJVppAclFacade futureFacade,
@Nonnull final InstanceIdentifier<Acl> id, @Nonnull final Acl acl,
- @Nonnull final NamingContext standardAclContext,
+ @Nonnull final AclContextManager standardAclContext,
@Nonnull final MappingContext mappingContext) throws WriteFailedException {
final AclAddReplace request = new AclAddReplace();
request.tag = getAclNameAsBytes(acl);
// by setting existing index, request is resolved as update
- request.aclIndex = standardAclContext.getIndex(acl.getAclName(), mappingContext);
- request.r = convertToStandardAclRules(getAces(acl));
+ request.aclIndex = standardAclContext.getAclIndex(acl.getAclName(), mappingContext);
+
+ final List<Ace> aces = getAces(acl);
+ request.r = toStandardAclRules(aces);
request.count = request.r.length;
- getReplyForWrite(futureFacade.aclAddReplace(request).toCompletableFuture(), id);
+ final AclAddReplaceReply reply = getReplyForWrite(futureFacade.aclAddReplace(request).toCompletableFuture(), id);
+ // overwrites existing acl metadata (aces might have been changed):
+ standardAclContext.addAcl(reply.aclIndex, acl.getAclName(), aces, mappingContext);
}
-
default void deleteStandardAcl(@Nonnull final FutureJVppAclFacade futureFacade,
@Nonnull final InstanceIdentifier<Acl> id, @Nonnull final Acl acl,
- @Nonnull final NamingContext standardAclContext,
+ @Nonnull final AclContextManager standardAclContext,
@Nonnull final MappingContext mappingContext) throws WriteFailedException {
final AclDel request = new AclDel();
final String aclName = acl.getAclName();
- request.aclIndex = standardAclContext.getIndex(aclName, mappingContext);
+ request.aclIndex = standardAclContext.getAclIndex(aclName, mappingContext);
getReplyForDelete(futureFacade.aclDel(request).toCompletableFuture(), id);
// removes mapping after successful delete
- standardAclContext.removeName(aclName, mappingContext);
+ standardAclContext.removeAcl(aclName, mappingContext);
}
default void addMacIpAcl(@Nonnull final FutureJVppAclFacade futureFacade,
@Nonnull final InstanceIdentifier<Acl> id, @Nonnull final Acl acl,
- @Nonnull final NamingContext macIpAclContext,
+ @Nonnull final AclContextManager macIpAclContext,
@Nonnull final MappingContext mappingContext) throws WriteFailedException {
final MacipAclAdd request = new MacipAclAdd();
request.tag = getAclNameAsBytes(acl);
- request.r = convertToMacIpAclRules(getAces(acl));
+
+ final List<Ace> aces = getAces(acl);
+ request.r = toMacIpAclRules(aces);
request.count = request.r.length;
final MacipAclAddReply reply = getReplyForWrite(futureFacade.macipAclAdd(request).toCompletableFuture(), id);
// map mac-ip acl to returned index
- macIpAclContext.addName(reply.aclIndex, acl.getAclName(), mappingContext);
+ macIpAclContext.addAcl(reply.aclIndex, acl.getAclName(), aces, mappingContext);
}
default void deleteMacIpAcl(@Nonnull final FutureJVppAclFacade futureFacade,
@Nonnull final InstanceIdentifier<Acl> id, @Nonnull final Acl acl,
- @Nonnull final NamingContext macIpAclContext,
+ @Nonnull final AclContextManager macIpAclContext,
@Nonnull final MappingContext mappingContext) throws WriteFailedException {
final MacipAclDel request = new MacipAclDel();
final String aclName = acl.getAclName();
- request.aclIndex = macIpAclContext.getIndex(aclName, mappingContext);
+ request.aclIndex = macIpAclContext.getAclIndex(aclName, mappingContext);
getReplyForDelete(futureFacade.macipAclDel(request).toCompletableFuture(), id);
- macIpAclContext.removeName(aclName, mappingContext);
+ macIpAclContext.removeAcl(aclName, mappingContext);
}