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/TrafficSelector.java b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
new file mode 100644
index 0000000..c024e9c
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
@@ -0,0 +1,38 @@
+package org.onlab.onos.net.flow;
+
+import java.util.List;
+
+/**
+ * Abstraction of a slice of network traffic.
+ */
+public interface TrafficSelector {
+
+    /**
+     * Returns selection criteria as an ordered list.
+     *
+     * @return list of criteria
+     */
+    List<Criterion> criteria();
+
+    /**
+     * Builder of traffic selector entities.
+     */
+    public interface Builder {
+
+        /**
+         * Adds a traffic selection criterion. If a same type criterion has
+         * already been added, it will be replaced by this one.
+         *
+         * @param criterion new criterion
+         */
+        void add(Criterion criterion);
+
+        /**
+         * Builds an immutable traffic selector.
+         *
+         * @return traffic selector
+         */
+        TrafficSelector build();
+    }
+
+}