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() {