Thomas Vachuska | 83e090e | 2014-10-22 14:25:35 -0700 | [diff] [blame] | 1 | /* |
Ray Milkey | 34c9590 | 2015-04-15 09:47:53 -0700 | [diff] [blame] | 2 | * Copyright 2014-2015 Open Networking Laboratory |
Thomas Vachuska | 83e090e | 2014-10-22 14:25:35 -0700 | [diff] [blame] | 3 | * |
Thomas Vachuska | 4f1a60c | 2014-10-28 13:39:07 -0700 | [diff] [blame] | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. | ||||
6 | * You may obtain a copy of the License at | ||||
Thomas Vachuska | 83e090e | 2014-10-22 14:25:35 -0700 | [diff] [blame] | 7 | * |
Thomas Vachuska | 4f1a60c | 2014-10-28 13:39:07 -0700 | [diff] [blame] | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * | ||||
10 | * Unless required by applicable law or agreed to in writing, software | ||||
11 | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
13 | * See the License for the specific language governing permissions and | ||||
14 | * limitations under the License. | ||||
Thomas Vachuska | 83e090e | 2014-10-22 14:25:35 -0700 | [diff] [blame] | 15 | */ |
Brian O'Connor | abafb50 | 2014-12-02 22:26:20 -0800 | [diff] [blame] | 16 | package org.onosproject.net.flow; |
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 17 | |
Yafit Hadar | 5796d97 | 2015-10-15 13:16:11 +0300 | [diff] [blame] | 18 | import java.util.List; |
19 | |||||
alshabib | 7b808c5 | 2015-06-26 14:22:24 -0700 | [diff] [blame] | 20 | import org.onlab.packet.EthType; |
Pavlin Radoslavov | 855ea2d | 2014-10-30 15:32:39 -0700 | [diff] [blame] | 21 | import org.onlab.packet.IpAddress; |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 22 | import org.onlab.packet.MacAddress; |
Michele Santuari | 4b6019e | 2014-12-19 11:31:45 +0100 | [diff] [blame] | 23 | import org.onlab.packet.MplsLabel; |
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 24 | import org.onlab.packet.TpPort; |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 25 | import org.onlab.packet.VlanId; |
Jonathan Hart | 54b406b | 2015-03-06 16:24:14 -0800 | [diff] [blame] | 26 | import org.onosproject.core.GroupId; |
27 | import org.onosproject.net.PortNumber; | ||||
28 | import org.onosproject.net.flow.instructions.Instruction; | ||||
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 29 | import org.onosproject.net.flow.instructions.Instructions; |
alshabib | 10c810b | 2015-08-18 16:59:04 -0700 | [diff] [blame] | 30 | import org.onosproject.net.meter.MeterId; |
alshabib | 55a55d9 | 2014-09-16 11:59:31 -0700 | [diff] [blame] | 31 | |
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 32 | /** |
33 | * Abstraction of network traffic treatment. | ||||
34 | */ | ||||
35 | public interface TrafficTreatment { | ||||
36 | |||||
37 | /** | ||||
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 38 | * Returns the list of treatment instructions that will be applied |
39 | * further down the pipeline. | ||||
40 | * @return list of treatment instructions | ||||
41 | */ | ||||
42 | List<Instruction> deferred(); | ||||
43 | |||||
44 | /** | ||||
45 | * Returns the list of treatment instructions that will be applied | ||||
46 | * immediately. | ||||
47 | * @return list of treatment instructions | ||||
48 | */ | ||||
49 | List<Instruction> immediate(); | ||||
50 | |||||
51 | /** | ||||
Jonathan Hart | 8ef6d3b | 2015-03-08 21:21:27 -0700 | [diff] [blame] | 52 | * Returns the list of all instructions in the treatment, both immediate and |
53 | * deferred. | ||||
54 | * | ||||
55 | * @return list of treatment instructions | ||||
56 | */ | ||||
57 | List<Instruction> allInstructions(); | ||||
58 | |||||
59 | /** | ||||
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 60 | * Returns the next table in the pipeline. |
61 | * @return a table transition; may be null. | ||||
62 | */ | ||||
63 | Instructions.TableTypeTransition tableTransition(); | ||||
64 | |||||
65 | /** | ||||
66 | * Whether the deferred treatment instructions will be cleared | ||||
67 | * by the device. | ||||
68 | * @return a boolean | ||||
69 | */ | ||||
Jonathan Hart | 4a0ba56 | 2015-03-23 17:23:33 -0700 | [diff] [blame] | 70 | boolean clearedDeferred(); |
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 71 | |
72 | /** | ||||
Saurav Das | 86af8f1 | 2015-05-25 23:55:33 -0700 | [diff] [blame] | 73 | * Returns the metadata instruction if there is one. |
74 | * | ||||
75 | * @return a metadata instruction that may be null | ||||
76 | */ | ||||
77 | Instructions.MetadataInstruction writeMetadata(); | ||||
78 | |||||
79 | /** | ||||
alshabib | 10c810b | 2015-08-18 16:59:04 -0700 | [diff] [blame] | 80 | * Returns the meter instruction if there is one. |
81 | * | ||||
82 | * @return a meter instruction that may be null | ||||
83 | */ | ||||
84 | Instructions.MeterInstruction metered(); | ||||
85 | |||||
86 | /** | ||||
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 87 | * Builder of traffic treatment entities. |
88 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 89 | interface Builder { |
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 90 | |
91 | /** | ||||
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 92 | * Adds an instruction to the builder. |
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 93 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 94 | * @param instruction an instruction |
95 | * @return a treatment builder | ||||
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 96 | */ |
alshabib | 369d294 | 2014-09-12 17:59:35 -0700 | [diff] [blame] | 97 | Builder add(Instruction instruction); |
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 98 | |
99 | /** | ||||
Thomas Vachuska | f4df005 | 2015-01-06 12:30:11 -0800 | [diff] [blame] | 100 | * Adds a drop instruction. |
101 | * | ||||
102 | * @return a treatment builder | ||||
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 103 | */ |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 104 | Builder drop(); |
Thomas Vachuska | f4df005 | 2015-01-06 12:30:11 -0800 | [diff] [blame] | 105 | |
106 | /** | ||||
107 | * Adds a punt-to-controller instruction. | ||||
108 | * | ||||
109 | * @return a treatment builder | ||||
110 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 111 | Builder punt(); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 112 | |
113 | /** | ||||
114 | * Set the output port. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 115 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 116 | * @param number the out port |
117 | * @return a treatment builder | ||||
118 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 119 | Builder setOutput(PortNumber number); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 120 | |
121 | /** | ||||
122 | * Sets the src l2 address. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 123 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 124 | * @param addr a macaddress |
125 | * @return a treatment builder | ||||
126 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 127 | Builder setEthSrc(MacAddress addr); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 128 | |
129 | /** | ||||
130 | * Sets the dst l2 address. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 131 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 132 | * @param addr a macaddress |
133 | * @return a treatment builder | ||||
134 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 135 | Builder setEthDst(MacAddress addr); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 136 | |
137 | /** | ||||
138 | * Sets the vlan id. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 139 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 140 | * @param id a vlanid |
141 | * @return a treatment builder | ||||
142 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 143 | Builder setVlanId(VlanId id); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 144 | |
145 | /** | ||||
146 | * Sets the vlan priority. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 147 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 148 | * @param pcp a vlan priority |
149 | * @return a treatment builder | ||||
150 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 151 | Builder setVlanPcp(Byte pcp); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 152 | |
153 | /** | ||||
154 | * Sets the src l3 address. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 155 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 156 | * @param addr an ip |
157 | * @return a treatment builder | ||||
158 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 159 | Builder setIpSrc(IpAddress addr); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 160 | |
161 | /** | ||||
162 | * Sets the dst l3 address. | ||||
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 163 | * |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 164 | * @param addr an ip |
165 | * @return a treatment builder | ||||
166 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 167 | Builder setIpDst(IpAddress addr); |
alshabib | 010c31d | 2014-09-26 10:01:12 -0700 | [diff] [blame] | 168 | |
169 | /** | ||||
Pavlin Radoslavov | febe82c | 2015-02-11 19:08:15 -0800 | [diff] [blame] | 170 | * Decrement the TTL in IP header by one. |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 171 | * |
172 | * @return a treatment builder | ||||
173 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 174 | Builder decNwTtl(); |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 175 | |
176 | /** | ||||
177 | * Copy the TTL to outer protocol layer. | ||||
178 | * | ||||
179 | * @return a treatment builder | ||||
180 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 181 | Builder copyTtlOut(); |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 182 | |
183 | /** | ||||
184 | * Copy the TTL to inner protocol layer. | ||||
185 | * | ||||
186 | * @return a treatment builder | ||||
187 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 188 | Builder copyTtlIn(); |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 189 | |
190 | /** | ||||
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 191 | * Push MPLS ether type. |
Thomas Vachuska | f4df005 | 2015-01-06 12:30:11 -0800 | [diff] [blame] | 192 | * |
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 193 | * @return a treatment builder |
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 194 | */ |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 195 | Builder pushMpls(); |
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 196 | |
197 | /** | ||||
198 | * Pops MPLS ether type. | ||||
Thomas Vachuska | f4df005 | 2015-01-06 12:30:11 -0800 | [diff] [blame] | 199 | * |
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 200 | * @return a treatment builder |
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 201 | */ |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 202 | Builder popMpls(); |
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 203 | |
204 | /** | ||||
Michele Santuari | 4b6019e | 2014-12-19 11:31:45 +0100 | [diff] [blame] | 205 | * Pops MPLS ether type and set the new ethertype. |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 206 | * |
Michele Santuari | 4b6019e | 2014-12-19 11:31:45 +0100 | [diff] [blame] | 207 | * @param etherType an ether type |
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 208 | * @return a treatment builder |
Sho SHIMIZU | 9a2b081 | 2015-06-30 10:02:22 -0700 | [diff] [blame] | 209 | * @deprecated in Drake Release |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 210 | */ |
alshabib | 7b808c5 | 2015-06-26 14:22:24 -0700 | [diff] [blame] | 211 | @Deprecated |
alshabib | 0ad4398 | 2015-05-07 13:43:13 -0700 | [diff] [blame] | 212 | Builder popMpls(int etherType); |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 213 | |
214 | /** | ||||
alshabib | 7b808c5 | 2015-06-26 14:22:24 -0700 | [diff] [blame] | 215 | * Pops MPLS ether type and set the new ethertype. |
216 | * | ||||
217 | * @param etherType an ether type | ||||
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 218 | * @return a treatment builder |
alshabib | 7b808c5 | 2015-06-26 14:22:24 -0700 | [diff] [blame] | 219 | */ |
220 | Builder popMpls(EthType etherType); | ||||
221 | |||||
222 | /** | ||||
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 223 | * Sets the mpls label. |
Thomas Vachuska | f4df005 | 2015-01-06 12:30:11 -0800 | [diff] [blame] | 224 | * |
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 225 | * @param mplsLabel MPLS label |
226 | * @return a treatment builder | ||||
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 227 | */ |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 228 | Builder setMpls(MplsLabel mplsLabel); |
Praseed Balakrishnan | 8c67d17 | 2014-11-10 10:15:41 -0800 | [diff] [blame] | 229 | |
230 | /** | ||||
Saurav Das | 73a7dd4 | 2015-08-19 22:20:31 -0700 | [diff] [blame] | 231 | * Sets the mpls bottom-of-stack indicator bit. |
232 | * | ||||
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 233 | * @param mplsBos boolean to set BOS=1 (true) or BOS=0 (false) |
Saurav Das | 73a7dd4 | 2015-08-19 22:20:31 -0700 | [diff] [blame] | 234 | * @return a treatment builder. |
235 | */ | ||||
236 | Builder setMplsBos(boolean mplsBos); | ||||
237 | |||||
238 | /** | ||||
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 239 | * Decrement MPLS TTL. |
240 | * | ||||
241 | * @return a treatment builder | ||||
242 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 243 | Builder decMplsTtl(); |
sangho | 3f97a17d | 2015-01-29 22:56:29 -0800 | [diff] [blame] | 244 | |
245 | /** | ||||
Marc De Leenheer | 4908775 | 2014-10-23 13:54:09 -0700 | [diff] [blame] | 246 | * Sets the optical channel ID or lambda. |
Sho SHIMIZU | bdaea83 | 2014-11-12 11:29:38 -0800 | [diff] [blame] | 247 | * |
Marc De Leenheer | 4908775 | 2014-10-23 13:54:09 -0700 | [diff] [blame] | 248 | * @param lambda optical channel ID |
249 | * @return a treatment builder | ||||
Sho SHIMIZU | 9553bb8 | 2015-06-30 16:02:45 -0700 | [diff] [blame] | 250 | * @deprecated in Drake Release |
Marc De Leenheer | 4908775 | 2014-10-23 13:54:09 -0700 | [diff] [blame] | 251 | */ |
Sho SHIMIZU | 9553bb8 | 2015-06-30 16:02:45 -0700 | [diff] [blame] | 252 | @Deprecated |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 253 | Builder setLambda(short lambda); |
Marc De Leenheer | 4908775 | 2014-10-23 13:54:09 -0700 | [diff] [blame] | 254 | |
255 | /** | ||||
sangho | 8995ac5 | 2015-02-04 11:29:03 -0800 | [diff] [blame] | 256 | * Sets the group ID. |
257 | * | ||||
258 | * @param groupId group ID | ||||
259 | * @return a treatment builder | ||||
260 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 261 | Builder group(GroupId groupId); |
sangho | 8995ac5 | 2015-02-04 11:29:03 -0800 | [diff] [blame] | 262 | |
alshabib | 10c810b | 2015-08-18 16:59:04 -0700 | [diff] [blame] | 263 | /** |
Steffen Gebert | bbfdaaa | 2015-09-29 11:01:46 +0200 | [diff] [blame] | 264 | * Sets the Queue ID. |
265 | * | ||||
266 | * @param queueId a queue ID | ||||
267 | * @return a treatment builder | ||||
268 | */ | ||||
269 | Builder setQueue(long queueId); | ||||
270 | |||||
271 | /** | ||||
alshabib | 10c810b | 2015-08-18 16:59:04 -0700 | [diff] [blame] | 272 | * Sets a meter to be used by this flow. |
273 | * | ||||
274 | * @param meterId a meter id | ||||
275 | * @return a treatment builder | ||||
276 | */ | ||||
277 | Builder meter(MeterId meterId); | ||||
alshabib | 9af7007 | 2015-02-09 14:34:16 -0800 | [diff] [blame] | 278 | |
279 | /** | ||||
alshabib | d17abc2 | 2015-04-21 18:26:35 -0700 | [diff] [blame] | 280 | * Sets the next table id to transition to. |
281 | * | ||||
282 | * @param tableId the table table | ||||
283 | * @return a treatement builder | ||||
284 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 285 | Builder transition(Integer tableId); |
alshabib | d17abc2 | 2015-04-21 18:26:35 -0700 | [diff] [blame] | 286 | |
287 | |||||
288 | /** | ||||
Saurav Das | fbe25c5 | 2015-03-04 11:12:00 -0800 | [diff] [blame] | 289 | * Pops outermost VLAN tag. |
290 | * | ||||
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 291 | * @return a treatment builder |
Saurav Das | fbe25c5 | 2015-03-04 11:12:00 -0800 | [diff] [blame] | 292 | */ |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 293 | Builder popVlan(); |
Saurav Das | fbe25c5 | 2015-03-04 11:12:00 -0800 | [diff] [blame] | 294 | |
295 | /** | ||||
Jonathan Hart | 54b406b | 2015-03-06 16:24:14 -0800 | [diff] [blame] | 296 | * Pushes a new VLAN tag. |
297 | * | ||||
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 298 | * @return a treatment builder |
Jonathan Hart | 54b406b | 2015-03-06 16:24:14 -0800 | [diff] [blame] | 299 | */ |
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 300 | Builder pushVlan(); |
Jonathan Hart | 54b406b | 2015-03-06 16:24:14 -0800 | [diff] [blame] | 301 | |
302 | /** | ||||
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 303 | * Any instructions preceded by this method call will be deferred. |
304 | * @return a treatment builder | ||||
305 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 306 | Builder deferred(); |
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 307 | |
308 | /** | ||||
309 | * Any instructions preceded by this method call will be immediate. | ||||
310 | * @return a treatment builder | ||||
311 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 312 | Builder immediate(); |
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 313 | |
314 | |||||
315 | /** | ||||
316 | * Instructs the device to clear the deferred instructions set. | ||||
317 | * @return a treatment builder | ||||
318 | */ | ||||
Sho SHIMIZU | 79906e4 | 2015-05-04 18:27:31 -0700 | [diff] [blame] | 319 | Builder wipeDeferred(); |
alshabib | 346b5b3 | 2015-03-06 00:42:16 -0800 | [diff] [blame] | 320 | |
321 | /** | ||||
Saurav Das | 86af8f1 | 2015-05-25 23:55:33 -0700 | [diff] [blame] | 322 | * Writes metadata to associate with a packet. |
323 | * <pre> | ||||
324 | * {@code | ||||
325 | * new_metadata = (old_metadata & ̃mask) | (value & mask) | ||||
326 | * } | ||||
327 | * </pre> | ||||
328 | * | ||||
329 | * @param value the metadata to write | ||||
330 | * @param mask the masked bits for the value | ||||
331 | * @return a treatment builder | ||||
332 | */ | ||||
333 | Builder writeMetadata(long value, long mask); | ||||
334 | |||||
335 | /** | ||||
Hyunsun Moon | a08c5d0 | 2015-07-14 17:53:00 -0700 | [diff] [blame] | 336 | * Sets the tunnel id. |
337 | * | ||||
Jonathan Hart | 3e59464 | 2015-10-20 17:31:24 -0700 | [diff] [blame] | 338 | * @param tunnelId a tunnel id |
339 | * @return a treatment builder | ||||
Hyunsun Moon | a08c5d0 | 2015-07-14 17:53:00 -0700 | [diff] [blame] | 340 | */ |
341 | Builder setTunnelId(long tunnelId); | ||||
342 | |||||
343 | /** | ||||
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 344 | * Sets the src TCP port. |
345 | * | ||||
346 | * @param port a port number | ||||
347 | * @return a treatment builder | ||||
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 348 | * @deprecated in Drake release |
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 349 | */ |
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 350 | @Deprecated |
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 351 | Builder setTcpSrc(short port); |
352 | |||||
353 | /** | ||||
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 354 | * Sets the src TCP port. |
355 | * | ||||
356 | * @param port a port number | ||||
357 | * @return a treatment builder | ||||
358 | */ | ||||
359 | Builder setTcpSrc(TpPort port); | ||||
360 | |||||
361 | /** | ||||
362 | * Sets the dst TCP port. | ||||
363 | * | ||||
364 | * @param port a port number | ||||
365 | * @return a treatment builder | ||||
366 | * @deprecated in Drake release | ||||
367 | */ | ||||
368 | @Deprecated | ||||
369 | Builder setTcpDst(short port); | ||||
370 | |||||
371 | /** | ||||
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 372 | * Sets the dst TCP port. |
373 | * | ||||
374 | * @param port a port number | ||||
375 | * @return a treatment builder | ||||
376 | */ | ||||
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 377 | Builder setTcpDst(TpPort port); |
378 | |||||
379 | /** | ||||
380 | * Sets the src UDP port. | ||||
381 | * | ||||
382 | * @param port a port number | ||||
383 | * @return a treatment builder | ||||
384 | * @deprecated in Drake release | ||||
385 | */ | ||||
386 | @Deprecated | ||||
387 | Builder setUdpSrc(short port); | ||||
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 388 | |
389 | /** | ||||
390 | * Sets the src UDP port. | ||||
391 | * | ||||
392 | * @param port a port number | ||||
393 | * @return a treatment builder | ||||
394 | */ | ||||
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 395 | Builder setUdpSrc(TpPort port); |
396 | |||||
397 | /** | ||||
398 | * Sets the dst UDP port. | ||||
399 | * | ||||
400 | * @param port a port number | ||||
401 | * @return a treatment builder | ||||
402 | * @deprecated in Drake release | ||||
403 | */ | ||||
404 | @Deprecated | ||||
405 | Builder setUdpDst(short port); | ||||
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 406 | |
407 | /** | ||||
408 | * Sets the dst UDP port. | ||||
409 | * | ||||
410 | * @param port a port number | ||||
411 | * @return a treatment builder | ||||
412 | */ | ||||
Hyunsun Moon | cf732fb | 2015-08-22 21:04:23 -0700 | [diff] [blame] | 413 | Builder setUdpDst(TpPort port); |
Hyunsun Moon | c8bd97c | 2015-07-18 22:47:33 -0700 | [diff] [blame] | 414 | |
415 | /** | ||||
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 416 | * Builds an immutable traffic treatment descriptor. |
Brian O'Connor | 6b52813 | 2015-03-10 16:39:52 -0700 | [diff] [blame] | 417 | * <p> |
418 | * If the treatment is empty when build() is called, it will add a default | ||||
419 | * drop rule automatically. For a treatment that is actually empty, use | ||||
420 | * {@link org.onosproject.net.flow.DefaultTrafficTreatment#emptyTreatment}. | ||||
421 | * </p> | ||||
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 422 | * |
423 | * @return traffic treatment | ||||
424 | */ | ||||
425 | TrafficTreatment build(); | ||||
Saurav Das | 86af8f1 | 2015-05-25 23:55:33 -0700 | [diff] [blame] | 426 | |
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 427 | } |
Saurav Das | 86af8f1 | 2015-05-25 23:55:33 -0700 | [diff] [blame] | 428 | |
tom | 8bb1606 | 2014-09-12 14:47:46 -0700 | [diff] [blame] | 429 | } |