adding packet types
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java
index ac10021..f7ff997 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OpenFlowControllerImpl.java
@@ -6,9 +6,7 @@
 import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.onos.of.controller.Dpid;
 import org.onlab.onos.of.controller.OpenFlowController;
 import org.onlab.onos.of.controller.OpenFlowSwitch;
@@ -17,11 +15,10 @@
 import org.onlab.onos.of.controller.RoleState;
 import org.onlab.onos.of.controller.driver.OpenFlowAgent;
 import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFPortStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component(immediate = true)
-@Service
 public class OpenFlowControllerImpl implements OpenFlowController {
 
     private static final Logger log =
@@ -38,6 +35,9 @@
     protected ArrayList<OpenFlowSwitchListener> ofEventListener =
             new ArrayList<OpenFlowSwitchListener>();
 
+    protected ArrayList<PacketListener> ofPacketListener =
+            new ArrayList<PacketListener>();
+
     private final Controller ctrl = new Controller();
 
     @Activate
@@ -94,14 +94,12 @@
 
     @Override
     public void addPacketListener(int priority, PacketListener listener) {
-        // TODO Auto-generated method stub
-
+        ofPacketListener.add(priority, listener);
     }
 
     @Override
     public void removePacketListener(PacketListener listener) {
-        // TODO Auto-generated method stub
-
+        ofPacketListener.remove(listener);
     }
 
     @Override
@@ -110,8 +108,22 @@
     }
 
     @Override
-    public void processPacket(OFMessage msg) {
-        log.info("Got message {}", msg);
+    public void processPacket(Dpid dpid, OFMessage msg) {
+        switch (msg.getType()) {
+        case PORT_STATUS:
+            for (OpenFlowSwitchListener l : ofEventListener) {
+                l.portChanged(dpid, (OFPortStatus) msg);
+            }
+            break;
+        case PACKET_IN:
+            for (PacketListener p : ofPacketListener) {
+                //TODO fix me!
+                p.handlePacket(null);
+            }
+            break;
+        default:
+            log.warn("Handling message type {} not yet implemented", msg.getType());
+        }
     }
 
     @Override
@@ -252,8 +264,8 @@
         }
 
         @Override
-        public void processMessage(OFMessage m) {
-            processPacket(m);
+        public void processMessage(Dpid dpid, OFMessage m) {
+            processPacket(dpid, m);
         }
     }