Committed by
Ray Milkey
Updating DefaultTrafficTreatment
- Updating EMPTY treatment to contain NOACTION - Remove NOACTION when building treatment from existing treatment - Putting NOACTION into immediate set if no actions exist Change-Id: I408b6b8daf2a3d38604a900c09d7c15cc3994757
Showing
2 changed files
with
8 additions
and
3 deletions
| ... | @@ -31,7 +31,6 @@ import org.onosproject.net.flow.instructions.Instruction; | ... | @@ -31,7 +31,6 @@ import org.onosproject.net.flow.instructions.Instruction; |
| 31 | import org.onosproject.net.flow.instructions.Instructions; | 31 | import org.onosproject.net.flow.instructions.Instructions; |
| 32 | import org.onosproject.net.meter.MeterId; | 32 | import org.onosproject.net.meter.MeterId; |
| 33 | 33 | ||
| 34 | -import java.util.Collections; | ||
| 35 | import java.util.List; | 34 | import java.util.List; |
| 36 | import java.util.Objects; | 35 | import java.util.Objects; |
| 37 | 36 | ||
| ... | @@ -51,7 +50,7 @@ public final class DefaultTrafficTreatment implements TrafficTreatment { | ... | @@ -51,7 +50,7 @@ public final class DefaultTrafficTreatment implements TrafficTreatment { |
| 51 | private final boolean hasClear; | 50 | private final boolean hasClear; |
| 52 | 51 | ||
| 53 | private static final DefaultTrafficTreatment EMPTY | 52 | private static final DefaultTrafficTreatment EMPTY |
| 54 | - = new DefaultTrafficTreatment(Collections.emptyList()); | 53 | + = new DefaultTrafficTreatment(ImmutableList.of(Instructions.createNoAction())); |
| 55 | private final Instructions.MeterInstruction meter; | 54 | private final Instructions.MeterInstruction meter; |
| 56 | 55 | ||
| 57 | /** | 56 | /** |
| ... | @@ -224,7 +223,10 @@ public final class DefaultTrafficTreatment implements TrafficTreatment { | ... | @@ -224,7 +223,10 @@ public final class DefaultTrafficTreatment implements TrafficTreatment { |
| 224 | treatment.deferred().forEach(i -> add(i)); | 223 | treatment.deferred().forEach(i -> add(i)); |
| 225 | 224 | ||
| 226 | immediate(); | 225 | immediate(); |
| 227 | - treatment.immediate().forEach(i -> add(i)); | 226 | + treatment.immediate().stream() |
| 227 | + // NOACTION will get re-added if there are no other actions | ||
| 228 | + .filter(i -> i.type() != Instruction.Type.NOACTION) | ||
| 229 | + .forEach(i -> add(i)); | ||
| 228 | 230 | ||
| 229 | clear = treatment.clearedDeferred(); | 231 | clear = treatment.clearedDeferred(); |
| 230 | } | 232 | } |
| ... | @@ -476,6 +478,7 @@ public final class DefaultTrafficTreatment implements TrafficTreatment { | ... | @@ -476,6 +478,7 @@ public final class DefaultTrafficTreatment implements TrafficTreatment { |
| 476 | public TrafficTreatment build() { | 478 | public TrafficTreatment build() { |
| 477 | if (deferred.size() == 0 && immediate.size() == 0 | 479 | if (deferred.size() == 0 && immediate.size() == 0 |
| 478 | && table == null && !clear) { | 480 | && table == null && !clear) { |
| 481 | + immediate(); | ||
| 479 | noAction(); | 482 | noAction(); |
| 480 | } | 483 | } |
| 481 | return new DefaultTrafficTreatment(deferred, immediate, table, clear, meta, meter); | 484 | return new DefaultTrafficTreatment(deferred, immediate, table, clear, meta, meter); | ... | ... |
| ... | @@ -416,6 +416,8 @@ public final class InstructionJsonMatcher extends TypeSafeDiagnosingMatcher<Json | ... | @@ -416,6 +416,8 @@ public final class InstructionJsonMatcher extends TypeSafeDiagnosingMatcher<Json |
| 416 | description); | 416 | description); |
| 417 | } else if (instruction instanceof ModMplsLabelInstruction) { | 417 | } else if (instruction instanceof ModMplsLabelInstruction) { |
| 418 | return matchModMplsLabelInstruction(jsonInstruction, description); | 418 | return matchModMplsLabelInstruction(jsonInstruction, description); |
| 419 | + } else if (instruction instanceof NoActionInstruction) { | ||
| 420 | + return true; | ||
| 419 | } | 421 | } |
| 420 | 422 | ||
| 421 | return false; | 423 | return false; | ... | ... |
-
Please register or login to post a comment