building flowmods
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 6064263..0bf4ea8 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
@@ -53,7 +53,8 @@
case OUTPUT:
outputs.add(instruction);
break;
- case MODIFICATION:
+ case L2MODIFICATION:
+ case L3MODIFICATION:
// TODO: enforce modification order if any
modifications.add(instruction);
break;
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/criteria/Criteria.java b/core/api/src/main/java/org/onlab/onos/net/flow/criteria/Criteria.java
index 24c49bb..41fcd74 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/criteria/Criteria.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/criteria/Criteria.java
@@ -227,7 +227,7 @@
return Type.VLAN_PCP;
}
- public Byte protocol() {
+ public Byte priority() {
return vlanPcp;
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instruction.java b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instruction.java
index 8c41a04..f05d238 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instruction.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instruction.java
@@ -5,12 +5,6 @@
*/
public interface Instruction {
- interface SubType { }
-
- public enum NoneSubType implements SubType {
- NONE;
- }
-
/**
* Represents the type of traffic treatment.
*/
@@ -31,9 +25,14 @@
GROUP,
/**
- * Signifies that the traffic should be modified in some way.
+ * Signifies that the traffic should be modified in L2 way.
*/
- MODIFICATION
+ L2MODIFICATION,
+
+ /**
+ * Signifies that the traffic should be modified in L3 way.
+ */
+ L3MODIFICATION
}
// TODO: Create factory class 'Instructions' that will have various factory
@@ -45,10 +44,4 @@
*/
public Type type();
- /**
- * Returns the subtype of the modification instruction.
- * @return type of instruction
- */
- public SubType subtype();
-
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instructions.java
index 270704e..894942c 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/Instructions.java
@@ -7,7 +7,6 @@
import org.onlab.onos.net.flow.instructions.L2ModificationInstruction.ModEtherInstruction;
import org.onlab.onos.net.flow.instructions.L3ModificationInstruction.L3SubType;
import org.onlab.onos.net.flow.instructions.L3ModificationInstruction.ModIPInstruction;
-import org.onlab.onos.net.flow.instructions.L3ModificationInstruction.ModIPProtoInstruction;
import org.onlab.packet.IPAddress;
import org.onlab.packet.MACAddress;
import org.onlab.packet.VLANID;
@@ -61,16 +60,6 @@
}
/**
- * Creates a L2 type modification.
- * @param l2Type the type to change to
- * @return a L2 modifications
- */
- public static L2ModificationInstruction modL2Type(Short l2Type) {
- checkNotNull(l2Type, "L2 type cannot be null");
- return new L2ModificationInstruction.ModEtherTypeInstruction(l2Type);
- }
-
- /**
* Creates a Vlan id modification.
* @param vlanId the vlan id to modify to.
* @return a L2 modification
@@ -110,15 +99,6 @@
return new ModIPInstruction(L3SubType.L3_DST, addr);
}
- /**
- * Creates an L3 protocol modification.
- * @param proto the protocol to change to
- * @return a L3 modification
- */
- public static L3ModificationInstruction modIPProto(Byte proto) {
- checkNotNull(proto, "IP protocol cannot be null");
- return new ModIPProtoInstruction(proto);
- }
/*
* Output instructions
@@ -129,11 +109,6 @@
public Type type() {
return Type.DROP;
}
-
- @Override
- public SubType subtype() {
- return NoneSubType.NONE;
- }
}
@@ -152,11 +127,6 @@
public Type type() {
return Type.OUTPUT;
}
-
- @Override
- public SubType subtype() {
- return NoneSubType.NONE;
- }
}
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java
index da86e13..9019efb 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L2ModificationInstruction.java
@@ -12,7 +12,7 @@
/**
* Represents the type of traffic treatment.
*/
- public enum L2SubType implements SubType {
+ public enum L2SubType {
/**
* Ether src modification.
*/
@@ -24,11 +24,6 @@
L2_DST,
/**
- * Ethertype modification.
- */
- L2_TYPE,
-
- /**
* VLAN id modification.
*/
VLAN_ID,
@@ -42,12 +37,11 @@
// TODO: Create factory class 'Instructions' that will have various factory
// to create specific instructions.
- @Override
- public abstract SubType subtype();
+ public abstract L2SubType subtype();
@Override
public Type type() {
- return Type.MODIFICATION;
+ return Type.L2MODIFICATION;
}
/**
@@ -55,16 +49,16 @@
*/
public static final class ModEtherInstruction extends L2ModificationInstruction {
- private final SubType subtype;
+ private final L2SubType subtype;
private final MACAddress mac;
- public ModEtherInstruction(SubType subType, MACAddress addr) {
+ public ModEtherInstruction(L2SubType subType, MACAddress addr) {
this.subtype = subType;
this.mac = addr;
}
@Override
- public SubType subtype() {
+ public L2SubType subtype() {
return this.subtype;
}
@@ -75,28 +69,6 @@
}
/**
- * Represents a L2 type modification instruction.
- */
- public static final class ModEtherTypeInstruction extends L2ModificationInstruction {
-
- public final short l2Type;
-
- public ModEtherTypeInstruction(short l2Type) {
- this.l2Type = l2Type;
- }
-
- @Override
- public SubType subtype() {
- return L2SubType.L2_TYPE;
- }
-
- public short l2Type() {
- return this.l2Type;
- }
-
- }
-
- /**
* Represents a VLAN id modification instruction.
*/
public static final class ModVlanIdInstruction extends L2ModificationInstruction {
@@ -108,7 +80,7 @@
}
@Override
- public SubType subtype() {
+ public L2SubType subtype() {
return L2SubType.VLAN_ID;
}
@@ -130,7 +102,7 @@
}
@Override
- public SubType subtype() {
+ public L2SubType subtype() {
return L2SubType.VLAN_PCP;
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L3ModificationInstruction.java b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L3ModificationInstruction.java
index eb4d3b6..c5cb7a6 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L3ModificationInstruction.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/instructions/L3ModificationInstruction.java
@@ -11,7 +11,7 @@
/**
* Represents the type of traffic treatment.
*/
- public enum L3SubType implements SubType {
+ public enum L3SubType {
/**
* Ether src modification.
*/
@@ -20,12 +20,7 @@
/**
* Ether dst modification.
*/
- L3_DST,
-
- /**
- * Ethertype modification.
- */
- L3_PROTO,
+ L3_DST
//TODO: remaining types
}
@@ -34,11 +29,11 @@
* Returns the subtype of the modification instruction.
* @return type of instruction
*/
- public abstract SubType subtype();
+ public abstract L3SubType subtype();
@Override
public Type type() {
- return Type.MODIFICATION;
+ return Type.L3MODIFICATION;
}
/**
@@ -46,16 +41,16 @@
*/
public static final class ModIPInstruction extends L3ModificationInstruction {
- private final SubType subtype;
+ private final L3SubType subtype;
private final IPAddress ip;
- public ModIPInstruction(SubType subType, IPAddress addr) {
+ public ModIPInstruction(L3SubType subType, IPAddress addr) {
this.subtype = subType;
this.ip = addr;
}
@Override
- public SubType subtype() {
+ public L3SubType subtype() {
return this.subtype;
}
@@ -64,26 +59,4 @@
}
}
-
- /**
- * Represents a L3 proto modification instruction.
- */
- public static final class ModIPProtoInstruction extends L3ModificationInstruction {
-
- public final Byte proto;
-
- public ModIPProtoInstruction(Byte proto) {
- this.proto = proto;
- }
-
- @Override
- public SubType subtype() {
- return L3SubType.L3_PROTO;
- }
-
- public short proto() {
- return this.proto;
- }
-
- }
}