pretty builders
Change-Id: If03b60f97be1eba3803c6fcb328196a4a195c7e8
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
index 9de68dc..2ce233f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
@@ -6,7 +6,12 @@
import java.util.LinkedList;
import java.util.List;
+import org.onlab.onos.net.PortNumber;
import org.onlab.onos.net.flow.instructions.Instruction;
+import org.onlab.onos.net.flow.instructions.Instructions;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
import org.slf4j.Logger;
public final class DefaultTrafficTreatment implements TrafficTreatment {
@@ -42,9 +47,10 @@
// TODO: should be a list of instructions based on modification objects
List<Instruction> modifications = new LinkedList<>();
-
- @Override
public Builder add(Instruction instruction) {
+ if (drop) {
+ return this;
+ }
switch (instruction.type()) {
case DROP:
drop = true;
@@ -67,6 +73,46 @@
}
@Override
+ public void drop() {
+ add(Instructions.createDrop());
+ }
+
+ @Override
+ public Builder setOutput(PortNumber number) {
+ return add(Instructions.createOutput(number));
+ }
+
+ @Override
+ public Builder setEthSrc(MacAddress addr) {
+ return add(Instructions.modL2Src(addr));
+ }
+
+ @Override
+ public Builder setEthDst(MacAddress addr) {
+ return add(Instructions.modL2Dst(addr));
+ }
+
+ @Override
+ public Builder setVlanId(VlanId id) {
+ return add(Instructions.modVlanId(id));
+ }
+
+ @Override
+ public Builder setVlanPcp(Byte pcp) {
+ return add(Instructions.modVlanPcp(pcp));
+ }
+
+ @Override
+ public Builder setIpSrc(IpPrefix addr) {
+ return add(Instructions.modL3Src(addr));
+ }
+
+ @Override
+ public Builder setIpDst(IpPrefix addr) {
+ return add(Instructions.modL3Dst(addr));
+ }
+
+ @Override
public TrafficTreatment build() {
//If we are dropping should we just return an emptry list?