2 * Copyright © 2015 Red Hat, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.ovsdb.openstack.netvirt.sfc.utils;
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessListsBuilder;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.AclBuilder;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.AccessListEntriesBuilder;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.Ace;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.AceBuilder;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.ActionsBuilder;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.MatchesBuilder;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.actions.packet.handling.PermitBuilder;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIpBuilder;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.ace.ip.ace.ip.version.AceIpv4Builder;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev150611.acl.transport.header.fields.DestinationPortRangeBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.acl.rev150105.RedirectToSfc;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.acl.rev150105.RedirectToSfcBuilder;
29 public class AclUtils extends AbstractUtils {
30 public MatchesBuilder matchesBuilder(MatchesBuilder matchesBuilder, int destPort) {
31 PortNumber portNumber = new PortNumber(destPort);
32 DestinationPortRangeBuilder destinationPortRangeBuilder = new DestinationPortRangeBuilder()
33 .setLowerPort(portNumber)
34 .setUpperPort(portNumber);
36 AceIpBuilder aceIpBuilder = new AceIpBuilder()
37 .setDestinationPortRange(destinationPortRangeBuilder.build())
38 .setProtocol((short)6)
39 .setAceIpVersion(new AceIpv4Builder().build());
41 return matchesBuilder.setAceType(aceIpBuilder.build());
44 public ActionsBuilder actionsBuilder(ActionsBuilder actionsBuilder, Boolean permit) {
45 return actionsBuilder.setPacketHandling(new PermitBuilder().setPermit(permit).build());
48 public ActionsBuilder actionsBuilder(ActionsBuilder actionsBuilder, String sfcName) {
49 RedirectToSfcBuilder redirectToSfcBuilder = new RedirectToSfcBuilder().setRedirectSfc(sfcName);
51 return actionsBuilder.addAugmentation(RedirectToSfc.class, redirectToSfcBuilder.build());
54 public AceBuilder aceBuilder(AceBuilder accessListEntryBuilder,
56 MatchesBuilder matchesBuilder,
57 ActionsBuilder actionsBuilder) {
58 return accessListEntryBuilder
59 .setRuleName(ruleName)
60 .setMatches(matchesBuilder.build())
61 .setActions(actionsBuilder.build());
64 public AccessListEntriesBuilder accessListEntriesBuidler(AccessListEntriesBuilder accessListEntriesBuilder,
65 AceBuilder aceBuilder) {
66 List<Ace> aceList = new ArrayList<>();
67 aceList.add(aceBuilder.build());
69 return accessListEntriesBuilder.setAce(aceList);
72 public AclBuilder aclBuilder(AclBuilder aclBuilder,
74 AccessListEntriesBuilder accessListEntriesBuilder) {
77 .setAccessListEntries(accessListEntriesBuilder.build());
80 public AccessListsBuilder accesslistsbuilder(AccessListsBuilder accessListsBuilder,
81 AclBuilder aclBuilder) {
82 List<Acl> aclList = new ArrayList<>();
83 aclList.add(aclBuilder.build());
85 return accessListsBuilder.setAcl(aclList);