diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java b/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
index 31b143d..5411a1b 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
@@ -371,14 +371,28 @@
 
     @Override
     public PortEvent getPortEvent(final SwitchPort port) {
-        ConcurrentMap<PortNumber, PortEvent> portMap = this.ports.get(port.getDpid());
+        return getPortEvent(port.getDpid(), port.getPortNumber());
+    }
+
+    @Override
+    public PortEvent getPortEvent(final Dpid dpid, PortNumber portNumber) {
+        ConcurrentMap<PortNumber, PortEvent> portMap = this.ports.get(dpid);
         if (portMap != null) {
-            return portMap.get(port.getPortNumber());
+            return portMap.get(portNumber);
         }
         return null;
     }
 
     @Override
+    public Collection<PortEvent> getPortEvents(final Dpid dpid) {
+        ConcurrentMap<PortNumber, PortEvent> portList = ports.get(dpid);
+        if (portList == null) {
+            return Collections.emptyList();
+        }
+        return Collections.unmodifiableCollection(portList.values());
+    }
+
+    @Override
     public Collection<PortEvent> getAllPortEvents() {
         List<PortEvent> events = new LinkedList<>();
         for (ConcurrentMap<PortNumber, PortEvent> cm : ports.values()) {
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java b/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java
index 9656013..e712795 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyInternal.java
@@ -5,6 +5,7 @@
 import net.floodlightcontroller.util.MACAddress;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.LinkTuple;
+import net.onrc.onos.core.util.PortNumber;
 import net.onrc.onos.core.util.SwitchPort;
 
 /**
@@ -35,6 +36,23 @@
     public PortEvent getPortEvent(SwitchPort port);
 
     /**
+     * Gets a PortEvent.
+     *
+     * @param dpid Switch DPID
+     * @param portNumber Port number
+     * @return the PortEvent for the (Dpid, PortNumber) if found, otherwise null
+     */
+    public PortEvent getPortEvent(Dpid dpid, PortNumber portNumber);
+
+    /**
+     * Gets all the PortEvents on a switch.
+     *
+     * @param dpid Switch DPID
+     * @return PortEvents
+     */
+    public Collection<PortEvent> getPortEvents(Dpid dpid);
+
+    /**
      * Gets all PortEvent entries.
      *
      * @return all PortEvent entries.
