blob: 538a78f24f6c5349d29902c7a3826125503cfd2f [file] [log] [blame]
Thomas Vachuska83e090e2014-10-22 14:25:35 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2014-present Open Networking Foundation
Thomas Vachuska83e090e2014-10-22 14:25:35 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * 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 Vachuska83e090e2014-10-22 14:25:35 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * 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 Vachuska83e090e2014-10-22 14:25:35 -070015 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.net.flow;
tom8bb16062014-09-12 14:47:46 -070017
Yafit Hadar5796d972015-10-15 13:16:11 +030018import java.util.List;
Cem Türker3baff672017-10-12 15:09:01 +030019import java.util.Map;
cansu.toprak409289d2017-10-27 10:04:05 +030020import java.util.Set;
Yafit Hadar5796d972015-10-15 13:16:11 +030021
Frank Wangdf383212017-06-23 09:17:41 +080022import com.google.common.annotations.Beta;
alshabib7b808c52015-06-26 14:22:24 -070023import org.onlab.packet.EthType;
Pavlin Radoslavov855ea2d2014-10-30 15:32:39 -070024import org.onlab.packet.IpAddress;
alshabib010c31d2014-09-26 10:01:12 -070025import org.onlab.packet.MacAddress;
Michele Santuari4b6019e2014-12-19 11:31:45 +010026import org.onlab.packet.MplsLabel;
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070027import org.onlab.packet.TpPort;
alshabib010c31d2014-09-26 10:01:12 -070028import org.onlab.packet.VlanId;
Jonathan Hart54b406b2015-03-06 16:24:14 -080029import org.onosproject.core.GroupId;
Jonathan Hart3c259162015-10-21 21:31:19 -070030import org.onosproject.net.DeviceId;
Jonathan Hart54b406b2015-03-06 16:24:14 -080031import org.onosproject.net.PortNumber;
alshabib880b6442015-11-23 22:13:04 -080032import org.onosproject.net.flow.instructions.ExtensionTreatment;
Jonathan Hart54b406b2015-03-06 16:24:14 -080033import org.onosproject.net.flow.instructions.Instruction;
alshabib346b5b32015-03-06 00:42:16 -080034import org.onosproject.net.flow.instructions.Instructions;
alshabib10c810b2015-08-18 16:59:04 -070035import org.onosproject.net.meter.MeterId;
Frank Wangdf383212017-06-23 09:17:41 +080036import org.onosproject.net.pi.runtime.PiTableAction;
alshabib55a55d92014-09-16 11:59:31 -070037
tom8bb16062014-09-12 14:47:46 -070038/**
39 * Abstraction of network traffic treatment.
40 */
41public interface TrafficTreatment {
42
43 /**
alshabib346b5b32015-03-06 00:42:16 -080044 * Returns the list of treatment instructions that will be applied
45 * further down the pipeline.
hwchiueffaded2019-07-10 23:28:32 -070046 *
alshabib346b5b32015-03-06 00:42:16 -080047 * @return list of treatment instructions
48 */
49 List<Instruction> deferred();
50
51 /**
52 * Returns the list of treatment instructions that will be applied
53 * immediately.
hwchiueffaded2019-07-10 23:28:32 -070054 *
alshabib346b5b32015-03-06 00:42:16 -080055 * @return list of treatment instructions
56 */
57 List<Instruction> immediate();
58
59 /**
Jonathan Hart8ef6d3b2015-03-08 21:21:27 -070060 * Returns the list of all instructions in the treatment, both immediate and
61 * deferred.
62 *
63 * @return list of treatment instructions
64 */
65 List<Instruction> allInstructions();
66
67 /**
alshabib346b5b32015-03-06 00:42:16 -080068 * Returns the next table in the pipeline.
hwchiueffaded2019-07-10 23:28:32 -070069 *
alshabib346b5b32015-03-06 00:42:16 -080070 * @return a table transition; may be null.
71 */
72 Instructions.TableTypeTransition tableTransition();
73
74 /**
75 * Whether the deferred treatment instructions will be cleared
76 * by the device.
hwchiueffaded2019-07-10 23:28:32 -070077 *
alshabib346b5b32015-03-06 00:42:16 -080078 * @return a boolean
79 */
Jonathan Hart4a0ba562015-03-23 17:23:33 -070080 boolean clearedDeferred();
alshabib346b5b32015-03-06 00:42:16 -080081
82 /**
Saurav Das86af8f12015-05-25 23:55:33 -070083 * Returns the metadata instruction if there is one.
84 *
85 * @return a metadata instruction that may be null
86 */
87 Instructions.MetadataInstruction writeMetadata();
88
89 /**
Cem Türker3baff672017-10-12 15:09:01 +030090 * Returns the stat trigger instruction if there is one.
hwchiueffaded2019-07-10 23:28:32 -070091 *
Cem Türker3baff672017-10-12 15:09:01 +030092 * @return a stat trigger instruction; may be null.
93 */
94 Instructions.StatTriggerInstruction statTrigger();
95
96 /**
alshabib10c810b2015-08-18 16:59:04 -070097 * Returns the meter instruction if there is one.
98 *
cansu.toprak409289d2017-10-27 10:04:05 +030099 * @return a meter instruction that may be a null.
alshabib10c810b2015-08-18 16:59:04 -0700100 */
101 Instructions.MeterInstruction metered();
102
103 /**
cansu.toprak409289d2017-10-27 10:04:05 +0300104 * Returns the meter instructions if there is any.
105 *
106 * @return meter instructions that may be an empty set.
107 */
108 Set<Instructions.MeterInstruction> meters();
109
110 /**
tom8bb16062014-09-12 14:47:46 -0700111 * Builder of traffic treatment entities.
112 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700113 interface Builder {
tom8bb16062014-09-12 14:47:46 -0700114
115 /**
alshabib010c31d2014-09-26 10:01:12 -0700116 * Adds an instruction to the builder.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800117 *
alshabib010c31d2014-09-26 10:01:12 -0700118 * @param instruction an instruction
119 * @return a treatment builder
tom8bb16062014-09-12 14:47:46 -0700120 */
alshabib369d2942014-09-12 17:59:35 -0700121 Builder add(Instruction instruction);
tom8bb16062014-09-12 14:47:46 -0700122
123 /**
Thomas Vachuskaf4df0052015-01-06 12:30:11 -0800124 * Adds a drop instruction.
125 *
126 * @return a treatment builder
alshabib010c31d2014-09-26 10:01:12 -0700127 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700128 Builder drop();
Thomas Vachuskaf4df0052015-01-06 12:30:11 -0800129
130 /**
131 * Adds a punt-to-controller instruction.
132 *
133 * @return a treatment builder
134 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700135 Builder punt();
alshabib010c31d2014-09-26 10:01:12 -0700136
137 /**
138 * Set the output port.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800139 *
alshabib010c31d2014-09-26 10:01:12 -0700140 * @param number the out port
141 * @return a treatment builder
142 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700143 Builder setOutput(PortNumber number);
alshabib010c31d2014-09-26 10:01:12 -0700144
145 /**
146 * Sets the src l2 address.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800147 *
alshabib010c31d2014-09-26 10:01:12 -0700148 * @param addr a macaddress
149 * @return a treatment builder
150 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700151 Builder setEthSrc(MacAddress addr);
alshabib010c31d2014-09-26 10:01:12 -0700152
153 /**
154 * Sets the dst l2 address.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800155 *
alshabib010c31d2014-09-26 10:01:12 -0700156 * @param addr a macaddress
157 * @return a treatment builder
158 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700159 Builder setEthDst(MacAddress addr);
alshabib010c31d2014-09-26 10:01:12 -0700160
161 /**
162 * Sets the vlan id.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800163 *
alshabib010c31d2014-09-26 10:01:12 -0700164 * @param id a vlanid
165 * @return a treatment builder
166 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700167 Builder setVlanId(VlanId id);
alshabib010c31d2014-09-26 10:01:12 -0700168
169 /**
170 * Sets the vlan priority.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800171 *
alshabib010c31d2014-09-26 10:01:12 -0700172 * @param pcp a vlan priority
173 * @return a treatment builder
174 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700175 Builder setVlanPcp(Byte pcp);
alshabib010c31d2014-09-26 10:01:12 -0700176
177 /**
178 * Sets the src l3 address.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800179 *
alshabib010c31d2014-09-26 10:01:12 -0700180 * @param addr an ip
181 * @return a treatment builder
182 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700183 Builder setIpSrc(IpAddress addr);
alshabib010c31d2014-09-26 10:01:12 -0700184
185 /**
186 * Sets the dst l3 address.
Sho SHIMIZUbdaea832014-11-12 11:29:38 -0800187 *
alshabib010c31d2014-09-26 10:01:12 -0700188 * @param addr an ip
189 * @return a treatment builder
190 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700191 Builder setIpDst(IpAddress addr);
alshabib010c31d2014-09-26 10:01:12 -0700192
193 /**
Pavlin Radoslavovfebe82c2015-02-11 19:08:15 -0800194 * Decrement the TTL in IP header by one.
sangho3f97a17d2015-01-29 22:56:29 -0800195 *
196 * @return a treatment builder
197 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700198 Builder decNwTtl();
sangho3f97a17d2015-01-29 22:56:29 -0800199
200 /**
201 * Copy the TTL to outer protocol layer.
202 *
203 * @return a treatment builder
204 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700205 Builder copyTtlOut();
sangho3f97a17d2015-01-29 22:56:29 -0800206
207 /**
208 * Copy the TTL to inner protocol layer.
209 *
210 * @return a treatment builder
211 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700212 Builder copyTtlIn();
sangho3f97a17d2015-01-29 22:56:29 -0800213
214 /**
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800215 * Push MPLS ether type.
Thomas Vachuskaf4df0052015-01-06 12:30:11 -0800216 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700217 * @return a treatment builder
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800218 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700219 Builder pushMpls();
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800220
221 /**
222 * Pops MPLS ether type.
Thomas Vachuskaf4df0052015-01-06 12:30:11 -0800223 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700224 * @return a treatment builder
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800225 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700226 Builder popMpls();
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800227
228 /**
Michele Santuari4b6019e2014-12-19 11:31:45 +0100229 * Pops MPLS ether type and set the new ethertype.
sangho3f97a17d2015-01-29 22:56:29 -0800230 *
Michele Santuari4b6019e2014-12-19 11:31:45 +0100231 * @param etherType an ether type
Jonathan Hart3e594642015-10-20 17:31:24 -0700232 * @return a treatment builder
alshabib7b808c52015-06-26 14:22:24 -0700233 */
234 Builder popMpls(EthType etherType);
235
236 /**
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800237 * Sets the mpls label.
Thomas Vachuskaf4df0052015-01-06 12:30:11 -0800238 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700239 * @param mplsLabel MPLS label
240 * @return a treatment builder
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800241 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700242 Builder setMpls(MplsLabel mplsLabel);
Praseed Balakrishnan8c67d172014-11-10 10:15:41 -0800243
244 /**
Saurav Das73a7dd42015-08-19 22:20:31 -0700245 * Sets the mpls bottom-of-stack indicator bit.
246 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700247 * @param mplsBos boolean to set BOS=1 (true) or BOS=0 (false)
Saurav Das73a7dd42015-08-19 22:20:31 -0700248 * @return a treatment builder.
249 */
250 Builder setMplsBos(boolean mplsBos);
251
252 /**
sangho3f97a17d2015-01-29 22:56:29 -0800253 * Decrement MPLS TTL.
254 *
255 * @return a treatment builder
256 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700257 Builder decMplsTtl();
sangho3f97a17d2015-01-29 22:56:29 -0800258
259 /**
sangho8995ac52015-02-04 11:29:03 -0800260 * Sets the group ID.
261 *
262 * @param groupId group ID
263 * @return a treatment builder
264 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700265 Builder group(GroupId groupId);
sangho8995ac52015-02-04 11:29:03 -0800266
alshabib10c810b2015-08-18 16:59:04 -0700267 /**
Steffen Gebertbbfdaaa2015-09-29 11:01:46 +0200268 * Sets the Queue ID.
269 *
270 * @param queueId a queue ID
271 * @return a treatment builder
272 */
273 Builder setQueue(long queueId);
274
275 /**
Steffen Gebertba2d3b72015-10-22 11:14:31 +0200276 * Sets the Queue ID for a specific port.
277 *
278 * @param queueId a queue ID
279 * @param port a port number
280 * @return a treatment builder
281 */
282 Builder setQueue(long queueId, PortNumber port);
283
284 /**
alshabib10c810b2015-08-18 16:59:04 -0700285 * Sets a meter to be used by this flow.
286 *
287 * @param meterId a meter id
288 * @return a treatment builder
289 */
290 Builder meter(MeterId meterId);
alshabib9af70072015-02-09 14:34:16 -0800291
292 /**
alshabibd17abc22015-04-21 18:26:35 -0700293 * Sets the next table id to transition to.
294 *
295 * @param tableId the table table
296 * @return a treatement builder
297 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700298 Builder transition(Integer tableId);
alshabibd17abc22015-04-21 18:26:35 -0700299
300
301 /**
Saurav Dasfbe25c52015-03-04 11:12:00 -0800302 * Pops outermost VLAN tag.
303 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700304 * @return a treatment builder
Saurav Dasfbe25c52015-03-04 11:12:00 -0800305 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700306 Builder popVlan();
Saurav Dasfbe25c52015-03-04 11:12:00 -0800307
308 /**
Jonathan Hart54b406b2015-03-06 16:24:14 -0800309 * Pushes a new VLAN tag.
310 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700311 * @return a treatment builder
Jonathan Hart54b406b2015-03-06 16:24:14 -0800312 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700313 Builder pushVlan();
Jonathan Hart54b406b2015-03-06 16:24:14 -0800314
315 /**
Konstantinos Kanonakis9215ff22016-11-04 13:28:11 -0500316 * Pushes a new VLAN tag using the supplied Ethernet type.
317 *
Ray Milkeyef794342016-11-09 16:20:29 -0800318 * @param ethType ethernet type
Konstantinos Kanonakis9215ff22016-11-04 13:28:11 -0500319 * @return a treatment builder
320 */
321 Builder pushVlan(EthType ethType);
322
323 /**
hwchiueffaded2019-07-10 23:28:32 -0700324 * Any instructions followed by this method call will be deferred.
325 *
alshabib346b5b32015-03-06 00:42:16 -0800326 * @return a treatment builder
327 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700328 Builder deferred();
alshabib346b5b32015-03-06 00:42:16 -0800329
330 /**
hwchiueffaded2019-07-10 23:28:32 -0700331 * Any instructions followed by this method call will be immediate.
332 *
alshabib346b5b32015-03-06 00:42:16 -0800333 * @return a treatment builder
334 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700335 Builder immediate();
alshabib346b5b32015-03-06 00:42:16 -0800336
337
338 /**
339 * Instructs the device to clear the deferred instructions set.
hwchiueffaded2019-07-10 23:28:32 -0700340 *
alshabib346b5b32015-03-06 00:42:16 -0800341 * @return a treatment builder
342 */
Sho SHIMIZU79906e42015-05-04 18:27:31 -0700343 Builder wipeDeferred();
alshabib346b5b32015-03-06 00:42:16 -0800344
345 /**
HelloONOSaf3b4282017-06-27 16:27:31 +0900346 * the instruction to clear not wipe the deferred instructions set.
hwchiueffaded2019-07-10 23:28:32 -0700347 *
HelloONOSaf3b4282017-06-27 16:27:31 +0900348 * @return a treatment builder
349 */
350 Builder notWipeDeferred();
351
352 /**
Saurav Das86af8f12015-05-25 23:55:33 -0700353 * Writes metadata to associate with a packet.
354 * <pre>
355 * {@code
356 * new_metadata = (old_metadata & ̃mask) | (value & mask)
357 * }
358 * </pre>
359 *
360 * @param value the metadata to write
361 * @param mask the masked bits for the value
362 * @return a treatment builder
363 */
364 Builder writeMetadata(long value, long mask);
365
366 /**
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700367 * Sets the tunnel id.
368 *
Jonathan Hart3e594642015-10-20 17:31:24 -0700369 * @param tunnelId a tunnel id
370 * @return a treatment builder
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700371 */
372 Builder setTunnelId(long tunnelId);
373
374 /**
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700375 * Sets the src TCP port.
376 *
377 * @param port a port number
378 * @return a treatment builder
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700379 */
380 Builder setTcpSrc(TpPort port);
381
382 /**
383 * Sets the dst TCP port.
384 *
385 * @param port a port number
386 * @return a treatment builder
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700387 */
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700388 Builder setTcpDst(TpPort port);
389
390 /**
391 * Sets the src UDP port.
392 *
393 * @param port a port number
394 * @return a treatment builder
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700395 */
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700396 Builder setUdpSrc(TpPort port);
397
398 /**
399 * Sets the dst UDP port.
400 *
401 * @param port a port number
402 * @return a treatment builder
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700403 */
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700404 Builder setUdpDst(TpPort port);
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700405
406 /**
lishuai3cce60b2015-12-01 19:35:16 +0800407 * Sets the arp src ip address.
408 *
409 * @param addr an ip
410 * @return a treatment builder
411 */
412 Builder setArpSpa(IpAddress addr);
413
414 /**
415 * Sets the arp src mac address.
416 *
417 * @param addr a macaddress
418 * @return a treatment builder
419 */
420 Builder setArpSha(MacAddress addr);
421
422 /**
souvikdas95c94223a2020-09-23 00:32:12 -0500423 * Sets the arp dst ip address.
424 *
425 * @param addr an ip
426 * @return a treatment builder
427 */
428 Builder setArpTpa(IpAddress addr);
429
430 /**
431 * Sets the arp dst mac address.
432 *
433 * @param addr a macaddress
434 * @return a treatment builder
435 */
436 Builder setArpTha(MacAddress addr);
437
438 /**
lishuai3cce60b2015-12-01 19:35:16 +0800439 * Sets the arp operation.
440 *
441 * @param op the value of arp operation.
442 * @return a treatment builder.
443 */
444 Builder setArpOp(short op);
445
446 /**
Frank Wangdf383212017-06-23 09:17:41 +0800447 * Sets the protocol independent table action.
448 *
449 * @param piTableAction protocol-independent table action
450 * @return a treatment builder.
451 */
452 @Beta
453 Builder piTableAction(PiTableAction piTableAction);
454
455 /**
Thiago Santos4a69ef82018-08-21 21:18:05 -0700456 * Sets the IP DSCP field.
457 *
458 * @param dscpValue the DSCP value
459 * @return a treatment builder.
460 */
461 Builder setIpDscp(byte dscpValue);
462
463 /**
Jonathan Hart3c259162015-10-21 21:31:19 -0700464 * Uses an extension treatment.
465 *
466 * @param extension extension treatment
467 * @param deviceId device ID
468 * @return a treatment builder
469 */
alshabib880b6442015-11-23 22:13:04 -0800470 Builder extension(ExtensionTreatment extension, DeviceId deviceId);
Jonathan Hart3c259162015-10-21 21:31:19 -0700471
472 /**
Cem Türker3baff672017-10-12 15:09:01 +0300473 * Add stat trigger instruction.
474 *
475 * @param statTriggerFieldMap defines stat trigger constraints
476 * @param statTriggerFlag describes which circumstances that start will be triggered
477 * @return a treatment builder
478 */
479 Builder statTrigger(Map<StatTriggerField, Long> statTriggerFieldMap,
480 StatTriggerFlag statTriggerFlag);
481
482 /**
Yi Tseng29b4f222021-07-28 17:00:46 -0700483 * Adds a truncate instruction.
484 *
485 * @param maxLen the maximum frame length in bytes, must be a positive integer
486 * @return a treatment builder
487 */
488 Builder truncate(int maxLen);
489
490 /**
Yi Tseng2a81c9d2016-09-14 10:14:24 -0700491 * Add all instructions from another treatment.
492 *
493 * @param treatment another treatment
494 * @return a treatment builder
495 */
496 Builder addTreatment(TrafficTreatment treatment);
497
498 /**
tom8bb16062014-09-12 14:47:46 -0700499 * Builds an immutable traffic treatment descriptor.
Brian O'Connor6b528132015-03-10 16:39:52 -0700500 * <p>
501 * If the treatment is empty when build() is called, it will add a default
502 * drop rule automatically. For a treatment that is actually empty, use
503 * {@link org.onosproject.net.flow.DefaultTrafficTreatment#emptyTreatment}.
504 * </p>
tom8bb16062014-09-12 14:47:46 -0700505 *
506 * @return traffic treatment
507 */
508 TrafficTreatment build();
Saurav Das86af8f12015-05-25 23:55:33 -0700509
tom8bb16062014-09-12 14:47:46 -0700510 }
Saurav Das86af8f12015-05-25 23:55:33 -0700511
tom8bb16062014-09-12 14:47:46 -0700512}