Sketched out packet service and related abstractions.
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
new file mode 100644
index 0000000..5debf1b
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
@@ -0,0 +1,37 @@
+package org.onlab.onos.net.packet;
+
+/**
+ * Service for intercepting data plane packets and for emitting synthetic
+ * outbound packets.
+ */
+public interface PacketService {
+
+ // TODO: ponder better ordering scheme that does not require absolute numbers
+
+ /**
+ * Adds the specified processor to the list of packet processors.
+ * It will be added into the list in the order of priority. The higher
+ * numbers will be processing the packets after the lower numbers.
+ *
+ * @param processor processor to be added
+ * @param priority priority in the reverse natural order
+ * @throws java.lang.IllegalArgumentException if a processor with the
+ * given priority already exists
+ */
+ void addProcessor(PacketProcessor processor, long priority);
+
+ /**
+ * Removes the specified processor from the processing pipeline.
+ *
+ * @param processor packet processor
+ */
+ void removeProcessor(PacketProcessor processor);
+
+ /**
+ * Emits the specified outbound packet onto the network.
+ *
+ * @param packet outbound packet
+ */
+ void emit(OutboundPacket packet);
+
+}