fix corsa pipeline divergence : need to differentiate between write and apply instructions.
Change-Id: I477d27d6e52a8e09744614e5f5aa843dd26331e0
diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
index f20d6cc..75f7f7f 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
@@ -189,6 +189,10 @@
return add(Instructions.modVlanPcp(pcp));
}
+ public Builder stripVlan() {
+ return add(Instructions.stripVlanId());
+ }
+
@Override
public Builder setIpSrc(IpAddress addr) {
return add(Instructions.modL3Src(addr));
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
index 9926751..1d2f7f4 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
@@ -106,6 +106,12 @@
public Builder setVlanPcp(Byte pcp);
/**
+ * Strips the vlan tag if there is one.
+ * @return a treatment builder
+ */
+ public Builder stripVlan();
+
+ /**
* Sets the src l3 address.
*
* @param addr an ip
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 7c3c24e..afbae7d 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -130,6 +130,14 @@
}
/**
+ * Strips the VLAN tag if one is present.
+ * @return a L2 modification
+ */
+ public static L2ModificationInstruction stripVlanId() {
+ return new StripVlanInstruction();
+ }
+
+ /**
* Creates a MPLS label modification.
* @param mplsLabel to set.
* @return a L2 Modification
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
index 4702266..2a93b45 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
@@ -53,6 +53,11 @@
VLAN_PCP,
/**
+ * Strips the vlan.
+ */
+ STRIP_VLAN,
+
+ /**
* MPLS Label modification.
*/
MPLS_LABEL,
@@ -273,6 +278,33 @@
}
}
+ public static final class StripVlanInstruction extends L2ModificationInstruction {
+
+ @Override
+ public L2SubType subtype() {
+ return L2SubType.STRIP_VLAN;
+ }
+
+ @Override
+ public String toString() {
+ return subtype().toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(type(), subtype());
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ return false;
+ }
+ }
+
/**
* Represents a VLAN POP modification instruction.
*/