aboutsummaryrefslogtreecommitdiffstats
path: root/framework/patches/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/FlowClassifier.java
blob: 0931206c39503272edef466d9b7899838a42e752 (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * 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.onosproject.vtnrsc.sfc;

import org.onlab.packet.IpPrefix;
import org.onosproject.vtnrsc.TenantId;
import org.onosproject.vtnrsc.VirtualPortId;
/**
 * Abstraction of an entity which provides flow classifier for service function chain.
 */
public interface FlowClassifier {

    /**
     * Returns flow classifier ID.
     *
     * @return flow classifier id
     */
    FlowClassifierId flowClassifierId();

    /**
     * Returns Tenant ID.
     *
     * @return tenant Id
     */
    TenantId tenantId();

    /**
     * Returns flow classifier name.
     *
     * @return flow classifier name
     */
    String flowclassifierName();

    /**
     * Returns flow classifier description.
     *
     * @return flow classifier description
     */
    String flowClassifierDescription();

    /**
     * Returns ethernet type.
     *
     * @return ethernet type
     */
    String etherType();

    /**
     * Returns IP Protocol.
     *
     * @return IP protocol
     */
    String ipProtocol();

    /**
     * Returns minimum source port range.
     *
     * @return minimum source port range
     */
    int minSrcPortRange();

    /**
     * Returns maximum source port range.
     *
     * @return maximum source port range
     */
    int maxSrcPortRange();

    /**
     * Returns minimum destination port range.
     *
     * @return minimum destination port range
     */
    int minDstPortRange();

    /**
     * Returns maximum destination port range.
     *
     * @return maximum destination port range.
     */
    int maxDstPortRange();

    /**
     * Returns Source IP prefix.
     *
     * @return Source IP prefix
     */
    IpPrefix srcIpPrefix();

    /**
     * Returns Destination IP prefix.
     *
     * @return Destination IP prefix
     */
    IpPrefix dstIpPrefix();

    /**
     * Returns Source virtual port.
     *
     * @return Source virtual port
     */
    VirtualPortId srcVirtualPort();

    /**
     * Returns Destination virtual port.
     *
     * @return Destination virtual port
     */
    VirtualPortId dstVirtualPort();

    /**
     * Returns whether this Flow classifier is an exact match to the
     * Flow classifier given in the argument.
     *
     * @param flowClassifier other flowClassifier to match against
     * @return true if the flowClassifiers are an exact match, otherwise false
     */
    boolean exactMatch(FlowClassifier flowClassifier);

    /**
     * Builder for flow Classifier.
     */
    interface Builder {

        /**
         * Returns Flow Classifier.
         *
         * @return flow classifier.
         */
        FlowClassifier build();

        /**
         * Sets Flow Classifier ID.
         *
         * @param flowClassifierId flow classifier id.
         * @return Builder object by setting flow classifier Id.
         */
        Builder setFlowClassifierId(FlowClassifierId flowClassifierId);

        /**
         * Sets Tenant ID.
         *
         * @param tenantId tenant id.
         * @return Builder object by setting Tenant ID.
         */
        Builder setTenantId(TenantId tenantId);

        /**
         * Sets Flow classifier name.
         *
         * @param name flow classifier name
         * @return builder object by setting flow classifier name
         */
        Builder setFlowClassifierName(String name);

        /**
         * Sets flow classifier description.
         *
         * @param description flow classifier description
         * @return flow classifier description
         */
        Builder setFlowClassifierDescription(String description);

        /**
         * Sets Ehternet type.
         *
         * @param etherType ethernet type
         * @return ethernet type
         */
        Builder setEtherType(String etherType);

        /**
         * Sets IP protocol.
         *
         * @param protocol IP protocol
         * @return builder object by setting IP protocol
         */
        Builder setIpProtocol(String protocol);

        /**
         * Set minimum source port range.
         *
         * @param minRange minimum source port range
         * @return builder object by setting minimum source port range
         */
        Builder setMinSrcPortRange(int minRange);

        /**
         * Sets maximum source port range.
         *
         * @param maxRange maximum source port range
         * @return builder object by setting maximum source port range
         */
        Builder setMaxSrcPortRange(int maxRange);

        /**
         * Sets minimum destination port range.
         *
         * @param minRange minimum destination port range
         * @return builder object by setting minimum destination port range
         */
        Builder setMinDstPortRange(int minRange);

        /**
         * Sets maximum destination port range.
         *
         * @param maxRange maximum destination port range.
         * @return builder object by setting maximum destination port range.
         */
        Builder setMaxDstPortRange(int maxRange);

        /**
         * Sets Source IP prefix.
         *
         * @param srcIpPrefix Source IP prefix
         * @return builder object by setting Source IP prefix
         */
        Builder setSrcIpPrefix(IpPrefix srcIpPrefix);

        /**
         * Sets Destination IP prefix.
         *
         * @param dstIpPrefix Destination IP prefix
         * @return builder object by setting Destination IP prefix
         */
        Builder setDstIpPrefix(IpPrefix dstIpPrefix);

        /**
         * Sets Source virtual port.
         *
         * @param srcPort Source virtual port
         * @return builder object by setting Source virtual port
         */
        Builder setSrcVirtualPort(VirtualPortId srcPort);

        /**
         * Sets Destination virtual port.
         *
         * @param dstPort Destination virtual port
         * @return builder object by setting Destination virtual port
         */
        Builder setDstVirtualPort(VirtualPortId dstPort);
    }
}