aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/acl/src/main/java/org/onos/acl/AclStore.java
blob: 88e49a73263531ba238df95608338f703044b6f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
 * Copyright 2015 Open Networking Laboratory
 * Originally created by Pengfei Lu, Network and Cloud Computing Laboratory, Dalian University of Technology, China
 * Advisers: Keqiu Li, Heng Qi and Haisheng Yu
 * This work is supported by the State Key Program of National Natural Science of China(Grant No. 61432002)
 * and Prospective Research Project on Future Networks in Jiangsu Future Networks Innovation Institute.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.onos.acl;

import org.onosproject.net.DeviceId;
import org.onosproject.net.flow.FlowRule;
import org.onosproject.store.Store;

import java.util.List;
import java.util.Set;

/**
 * Service interface exported by ACL distributed store.
 */
public interface AclStore extends Store {

    /**
     * Gets a list containing all ACL rules.
     * @return a list containing all ACL rules
     */
    List<AclRule> getAclRules();

    /**
     * Adds a new ACL rule.
     * @param rule new ACL rule
     */
    void addAclRule(AclRule rule);

    /**
     * Gets an existing ACL rule.
     * @param ruleId ACL rule id
     * @return ACL rule with the given id
     */
    AclRule getAclRule(RuleId ruleId);

    /**
     * Removes an existing ACL rule by rule id.
     * @param ruleId ACL rule id
     */
    void removeAclRule(RuleId ruleId);

    /**
     * Clears ACL and reset all.
     */
    void clearAcl();

    /**
     * Gets the current priority for new ACL flow rule by device id.
     * @param deviceId device id
     * @return new ACL flow rule's priority in the given device
     */
    int getPriorityByDevice(DeviceId deviceId);

    /**
     * Gets a set containing all ACL flow rules belonging to a given ACL rule.
     * @param ruleId ACL rule id
     * @return a set containing all ACL flow rules belonging to the given ACL rule
     */
    Set<FlowRule> getFlowByRule(RuleId ruleId);

    /**
     * Adds a new mapping from ACL rule to ACL flow rule.
     * @param ruleId ACL rule id
     * @param flowRule ACL flow rule
     */
    void addRuleToFlowMapping(RuleId ruleId, FlowRule flowRule);

    /**
     * Removes an existing mapping from ACL rule to ACL flow rule.
     * @param ruleId ACL rule id
     */
    void removeRuleToFlowMapping(RuleId ruleId);

    /**
     * Gets a list containing all allowing ACL rules matching a given denying ACL rule.
     * @param denyingRuleId denying ACL rule id
     * @return a list containing all allowing ACL rules matching the given denying ACL rule
     */
    List<RuleId> getAllowingRuleByDenyingRule(RuleId denyingRuleId);

    /**
     * Adds a new mapping from denying ACL rule to allowing ACL rule.
     * @param denyingRuleId denying ACL rule id
     * @param allowingRuleId allowing ACL rule id
     */
    void addDenyToAllowMapping(RuleId denyingRuleId, RuleId allowingRuleId);

    /**
     * Removes an exsiting mapping from denying ACL rule to allowing ACL rule.
     * @param denyingRuleId denying ACL rule id
     */
    void removeDenyToAllowMapping(RuleId denyingRuleId);

    /**
     * Checks if an existing ACL rule already works in a given device.
     * @param ruleId ACL rule id
     * @param deviceId devide id
     * @return true if the given ACL rule works in the given device
     */
    boolean checkIfRuleWorksInDevice(RuleId ruleId, DeviceId deviceId);

    /**
     * Adds a new mapping from ACL rule to device.
     * @param ruleId ACL rule id
     * @param deviceId device id
     */
    void addRuleToDeviceMapping(RuleId ruleId, DeviceId deviceId);

    /**
     * Removes an existing mapping from ACL rule to device.
     * @param ruleId ACL rule id
     */
    void removeRuleToDeviceMapping(RuleId ruleId);

}