Use typed queues for OF message processing

Process OF messages through 8 queues. Output queue for messages
controlled per OF Agent with help of message classifiers.

Queues can be configured through component configuration mechanism
for "org.onosproject.openflow.controller.impl.OpenFlowControllerImpl"
component.

Classifiers can be configured through NetworkConfig API in the following
form:

      {
        "devices": {
           "of:0000000000000001": {
               "classifiers": [{
                   "ethernet-type":"LLDP",
                   "target-queue":0
               },{
                   "ethernet-type":"BDDP",
                   "target-queue":0
               },{
                   "ethernet-type":"0x1234",
                   "target-queue":1
               }]
           }
        }
      }

Where "target_queue" is queue number from 0 to 7 (7 is default queue),
"ethernet_type" is a type of a packet either in "0xFFFF" from or enum
name as defined in the "org.onlab.packet.EthType.EtherType" enum.

Change-Id: I0512ef653d90c36f00289014872170c1a8aa5204
diff --git a/providers/openflow/device/src/test/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProviderTest.java b/providers/openflow/device/src/test/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProviderTest.java
index a0869c4..91c92ff 100644
--- a/providers/openflow/device/src/test/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProviderTest.java
+++ b/providers/openflow/device/src/test/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProviderTest.java
@@ -38,6 +38,7 @@
 import org.onosproject.net.driver.DriverServiceAdapter;
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.openflow.controller.Dpid;
+import org.onosproject.openflow.controller.OpenFlowClassifierListener;
 import org.onosproject.openflow.controller.OpenFlowController;
 import org.onosproject.openflow.controller.OpenFlowEventListener;
 import org.onosproject.openflow.controller.OpenFlowMessageListener;
@@ -333,6 +334,14 @@
         public void setRole(Dpid dpid, RoleState role) {
             roleMap.put(dpid, role);
         }
+
+        @Override
+        public void removeClassifierListener(OpenFlowClassifierListener listener) {
+        }
+
+        @Override
+        public void addClassifierListener(OpenFlowClassifierListener listener) {
+        }
     }
 
     private static class TestOpenFlowSwitch implements OpenFlowSwitch {
diff --git a/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java b/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java
index 9b87b22..6abd885 100644
--- a/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java
+++ b/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java
@@ -40,6 +40,7 @@
 import org.onosproject.net.provider.AbstractProviderService;
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.openflow.controller.Dpid;
+import org.onosproject.openflow.controller.OpenFlowClassifierListener;
 import org.onosproject.openflow.controller.OpenFlowController;
 import org.onosproject.openflow.controller.OpenFlowEventListener;
 import org.onosproject.openflow.controller.OpenFlowMessageListener;
@@ -177,7 +178,6 @@
     }
 
 
-
     @After
     public void tearDown() {
         provider.deactivate();
@@ -313,6 +313,14 @@
         public OpenFlowSwitch getEqualSwitch(Dpid dpid) {
             return null;
         }
+
+        @Override
+        public void removeClassifierListener(OpenFlowClassifierListener listener) {
+        }
+
+        @Override
+        public void addClassifierListener(OpenFlowClassifierListener listener) {
+        }
     }
 
     private class TestGroupProviderRegistry implements GroupProviderRegistry {
diff --git a/providers/openflow/packet/src/test/java/org/onosproject/provider/of/packet/impl/OpenFlowPacketProviderTest.java b/providers/openflow/packet/src/test/java/org/onosproject/provider/of/packet/impl/OpenFlowPacketProviderTest.java
index c0acd5a..b4f8d53 100644
--- a/providers/openflow/packet/src/test/java/org/onosproject/provider/of/packet/impl/OpenFlowPacketProviderTest.java
+++ b/providers/openflow/packet/src/test/java/org/onosproject/provider/of/packet/impl/OpenFlowPacketProviderTest.java
@@ -38,6 +38,7 @@
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.openflow.controller.DefaultOpenFlowPacketContext;
 import org.onosproject.openflow.controller.Dpid;
+import org.onosproject.openflow.controller.OpenFlowClassifierListener;
 import org.onosproject.openflow.controller.OpenFlowController;
 import org.onosproject.openflow.controller.OpenFlowEventListener;
 import org.onosproject.openflow.controller.OpenFlowMessageListener;
@@ -383,6 +384,14 @@
         public void setRole(Dpid dpid, RoleState role) {
         }
 
+        @Override
+        public void removeClassifierListener(OpenFlowClassifierListener listener) {
+        }
+
+        @Override
+        public void addClassifierListener(OpenFlowClassifierListener listener) {
+        }
+
     }
 
     private class TestOpenFlowSwitch implements OpenFlowSwitch {
@@ -476,6 +485,7 @@
         @Override
         public void returnRoleReply(RoleState requested, RoleState reponse) {
         }
+
         @Override
         public Device.Type deviceType() {
             return Device.Type.SWITCH;