* Added initial support for add/get/delete Flow state to the Network MAP via the REST API
  NOTE: The "add" REST API can't be used as-is.
* Added initial support for reading the Flow state from the Network MAP by the Controller
  and sending it to the switches.
  Currently, the Controller reads periodically the Flow entries (every 3 seconds)
  NOTE: The writing of the OpenFlow state to the switches is not tested.

The Python scripts for to add/delete/get flows are intentionally omitted until
the "add" REST API issue is resolved.

NOTE: Two new keys have been added to the database: "flow_id" and "flow_entry_id".
This requires that the older database should be deleted, because Cassandra
doesn't allow adding new keys to an existing database.
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java b/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
index 4af1deb..8788aa7 100644
--- a/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
+++ b/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
@@ -132,4 +132,101 @@
 		@GremlinGroovy("_().in('host').in('on').path(){it.number}{it.dpid}")
 		public Iterable<SwitchPort> getAttachmentPoints();*/
 	}
+
+public interface IFlowPath extends IBaseObject {
+		@Property("flow_id")
+		public String getFlowId();
+
+		@Property("flow_id")
+		public void setFlowId(String flowId);
+
+		@Property("installer_id")
+		public String getInstallerId();
+
+		@Property("installer_id")
+		public void setInstallerId(String installerId);
+
+		@Property("src_switch")
+		public String getSrcSwitch();
+
+		@Property("src_switch")
+		public void setSrcSwitch(String srcSwitch);
+
+		@Property("src_port")
+		public Short getSrcPort();
+
+		@Property("src_port")
+		public void setSrcPort(Short srcPort);
+
+		@Property("dst_switch")
+		public String getDstSwitch();
+
+		@Property("dst_switch")
+		public void setDstSwitch(String dstSwitch);
+
+		@Property("dst_port")
+		public Short getDstPort();
+
+		@Property("dst_port")
+		public void setDstPort(Short dstPort);
+
+		@Adjacency(label="flow", direction=Direction.IN)
+		public Iterable<IFlowEntry> getFlowEntries();
+
+		@Adjacency(label="flow", direction=Direction.IN)
+		public void addFlowEntry(final IFlowEntry flowEntry);
+
+		@Adjacency(label="flow", direction=Direction.IN)
+		public void removeFlowEntry(final IFlowEntry flowEntry);
+	}
+
+public interface IFlowEntry extends IBaseObject {
+		@Property("flow_entry_id")
+		public String getFlowEntryId();
+
+		@Property("flow_entry_id")
+		public void setFlowEntryId(String flowEntryId);
+
+		@Property("switch_dpid")
+		public String getSwitchDpid();
+
+		@Property("switch_dpid")
+		public void setSwitchDpid(String switchDpid);
+
+		@Property("in_port")
+		public Short getInPort();
+
+		@Property("in_port")
+		public void setInPort(Short inPort);
+
+		@Property("out_port")
+		public Short getOutPort();
+
+		@Property("out_port")
+		public void setOutPort(Short outPort);
+
+		@Property("user_state")
+		public String getUserState();
+
+		@Property("user_state")
+		public void setUserState(String userState);
+
+		@Property("switch_state")
+		public String getSwitchState();
+
+		@Property("switch_state")
+		public void setSwitchState(String switchState);
+
+		@Property("error_state_type")
+		public String getErrorStateType();
+
+		@Property("error_state_type")
+		public void setErrorStateType(String errorStateType);
+
+		@Property("error_state_code")
+		public String getErrorStateCode();
+
+		@Property("error_state_code")
+		public void setErrorStateCode(String errorStateCode);
+	}
 }