diff --git a/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java b/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java
index 95f20f424e1a8e9b698067ab64a711a9be0a3f09..39c017724eb632a2355e190c82635b018ecf9eb8 100644
--- a/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java
+++ b/src/main/java/net/floodlightcontroller/core/OFSwitchBase.java
@@ -97,9 +97,9 @@ public abstract class OFSwitchBase implements IOFSwitch {
     // Lock to protect modification of the port maps. We only need to 
     // synchronize on modifications. For read operations we are fine since
     // we rely on ConcurrentMaps which works for our use case.
-    private Object portLock;
+    protected Object portLock;
     // Map port numbers to the appropriate OFPhysicalPort
-    private ConcurrentHashMap<Short, OFPhysicalPort> portsByNumber;
+    protected ConcurrentHashMap<Short, OFPhysicalPort> portsByNumber;
     // Map port names to the appropriate OFPhyiscalPort
     // XXX: The OF spec doesn't specify if port names need to be unique but
     //      according it's always the case in practice. 
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
index 84a76fd17d272312fc66f1fe0e0ab98440abb34d..84d1cc958ef8354819e5eabe3faf04ecb915e5a6 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
@@ -19,7 +19,6 @@ package net.floodlightcontroller.linkdiscovery;
 
 import java.util.Map;
 import java.util.Set;
-
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.routing.Link;
 import net.floodlightcontroller.topology.NodePortTuple;
@@ -87,4 +86,10 @@ public interface ILinkDiscoveryService extends IFloodlightService {
      * @param autoPortFastFeature
      */
     public void setAutoPortFastFeature(boolean autoPortFastFeature);
+
+    /**
+     * Get the map of node-port tuples from link DB
+     */
+    public Map<NodePortTuple, Set<Link>> getPortLinks();
+    
 }
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index 9d7e6e1f8744c9e351f200ea339f35890cf6037f..0cc268cde8e6a14ebaf8e06ec6d881f3ee0497f6 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -349,7 +349,7 @@ public class LinkDiscoveryManager implements IOFMessageListener,
         } while (updates.peek() != null);
     }
 
-    private boolean isLinkDiscoverySuppressed(long sw, short portNumber) {
+    protected boolean isLinkDiscoverySuppressed(long sw, short portNumber) {
         return this.suppressLinkDiscovery.contains(new NodePortTuple(sw,
                                                                      portNumber));
     }
@@ -599,10 +599,10 @@ public class LinkDiscoveryManager implements IOFMessageListener,
      * @param port
      * @return
      */
-    protected List<OFAction> getDiscoveryActions (short port){
+    protected List<OFAction> getDiscoveryActions (IOFSwitch sw, OFPhysicalPort port){
         // set actions
         List<OFAction> actions = new ArrayList<OFAction>();
-        actions.add(new OFActionOutput(port, (short) 0));
+        actions.add(new OFActionOutput(port.getPortNumber(), (short) 0));
         return actions;
     }
 
@@ -731,9 +731,9 @@ public class LinkDiscoveryManager implements IOFMessageListener,
         po.setBufferId(OFPacketOut.BUFFER_ID_NONE);
         po.setInPort(OFPort.OFPP_NONE);
 
-        List<OFAction> actions = getDiscoveryActions(port);
+        List<OFAction> actions = getDiscoveryActions(iofSwitch, ofpPort);
         po.setActions(actions);
-        po.setActionsLength((short) OFActionOutput.MINIMUM_LENGTH);
+        po.setActionsLength(getDiscoveryActionsLength(iofSwitch, ofpPort));
 
         // set data
         po.setLengthU(OFPacketOut.MINIMUM_LENGTH + po.getActionsLength()
@@ -751,7 +751,12 @@ public class LinkDiscoveryManager implements IOFMessageListener,
 
     }
 
-    /**
+    protected short getDiscoveryActionsLength(IOFSwitch iofSwitch,
+			OFPhysicalPort ofpPort) {
+		return (short) OFActionOutput.MINIMUM_LENGTH;
+	}
+
+	/**
      * Send LLDPs to all switch-ports
      */
     protected void discoverOnAllPorts() {