Interface for Flow manager abstraction in ONOS
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntry.java b/src/main/java/net/floodlightcontroller/util/FlowEntry.java
index 717be4e..56a1631 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntry.java
+++ b/src/main/java/net/floodlightcontroller/util/FlowEntry.java
@@ -13,6 +13,7 @@
import net.floodlightcontroller.util.MACAddress;
import net.floodlightcontroller.util.IPv4;
+import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
/**
@@ -22,6 +23,7 @@
* support multiple in-ports and multiple out-ports.
*/
public class FlowEntry {
+ private FlowId flowId; //FlowID of flowEntry
private FlowEntryId flowEntryId; // The Flow Entry ID
private FlowEntryMatch flowEntryMatch; // The Flow Entry Match
private ArrayList<FlowEntryAction> flowEntryActions; // The Flow Entry Actions
@@ -327,4 +329,19 @@
return ret;
}
+
+ /**
+ * @return the flowId
+ */
+ @JsonIgnore
+ public FlowId getFlowId() {
+ return flowId;
+ }
+
+ /**
+ * @param flowId the flowId to set
+ */
+ public void setFlowId(FlowId flowId) {
+ this.flowId = flowId;
+ }
}
diff --git a/src/main/java/net/onrc/onos/flow/IFlowManager.java b/src/main/java/net/onrc/onos/flow/IFlowManager.java
new file mode 100644
index 0000000..da6448c
--- /dev/null
+++ b/src/main/java/net/onrc/onos/flow/IFlowManager.java
@@ -0,0 +1,53 @@
+package net.onrc.onos.flow;
+
+import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.floodlightcontroller.util.FlowEntry;
+import net.floodlightcontroller.util.FlowPath;
+
+public interface IFlowManager {
+
+ /*
+ * Generic create Flow from port to port
+ */
+ public void createFlow(IPortObject src_port, IPortObject dest_port);
+ /*
+ * get Flows matching a src_port & dest_port
+ */
+ public Iterable<FlowPath> getFlows(IPortObject src_port, IPortObject dest_port);
+ /*
+ * get all Flows going out from port
+ */
+ public Iterable<FlowPath> getFlows(IPortObject port);
+ /*
+ * Reconcile all flows on inactive port (src port of link which might be broken)
+ */
+ public void reconcileFlows(IPortObject src_port);
+ /*
+ * Reconcile flow based on flow
+ */
+ public void reconcileFlow(IPortObject src_port, IPortObject dest_port);
+ /*
+ * compute a flow path using src/dest port
+ */
+ public FlowPath computeFlowPath(IPortObject src_port, IPortObject dest_port);
+ /*
+ * Get all FlowEntries of a Flow
+ */
+ public Iterable<FlowEntry> getFlowEntries(FlowPath flow);
+ /*
+ * install a flow entry on switch
+ */
+ public void installFlowEntry(FlowEntry entry);
+ /*
+ * remove a flowEntry from switch
+ */
+ public void removeFlowEntry(FlowEntry entry);
+ /*
+ * install flow entry on remote controller
+ */
+ public void installFlowEntry(String ctrlId, FlowEntry entry);
+ /*
+ * remove flow entry on remote controller
+ */
+ public void removeFlowEntry(String ctrlId, FlowEntry entry);
+}