Added a set of abstractions for flow rule subsystem.
Added an apps source subtree.
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
new file mode 100644
index 0000000..ccb6a51
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
@@ -0,0 +1,42 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.DeviceId;
+
+/**
+ * Service for injecting flow rules into the environment and for obtaining
+ * information about flow rules already in the environment.
+ */
+public interface FlowRuleService {
+
+    /**
+     * Returns the collection of flow entries applied on the specified device.
+     *
+     * @param deviceId device identifier
+     * @return collection of flow rules
+     */
+    Iterable<FlowEntry> getFlowEntries(DeviceId deviceId);
+
+    /**
+     * Applies the specified flow rules onto their respective devices.
+     *
+     * @param flowRules one or more flow rules
+     * throws SomeKindOfException that indicates which ones were applied and
+     *                  which ones failed
+     */
+    void applyFlowRules(FlowRule... flowRules);
+
+    /**
+     * Adds the specified flow rule listener.
+     *
+     * @param listener flow rule listener
+     */
+    void addListener(FlowRuleListener listener);
+
+    /**
+     * Removes the specified flow rule listener.
+     *
+     * @param listener flow rule listener
+     */
+    void removeListener(FlowRuleListener listener);
+
+}