From 508c65f02fe49319ce4b0b40dbf0f2193ddc899f Mon Sep 17 00:00:00 2001
From: Kanzhe Jiang <kanzhe.jiang@bigswitch.com>
Date: Sat, 31 Mar 2012 16:46:30 -0700
Subject: [PATCH] Topology service can provide alternative broadcast port given
 a src/dst pair

---
 .../floodlightcontroller/topology/ITopologyService.java  | 9 +++++++++
 .../floodlightcontroller/topology/TopologyManager.java   | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/src/main/java/net/floodlightcontroller/topology/ITopologyService.java b/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
index ebc3a7618..eba4ada8d 100644
--- a/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
+++ b/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
@@ -43,6 +43,15 @@ public interface ITopologyService extends IFloodlightService  {
 
     public boolean isAllowed(long sw, short portId);
 
+    /**
+     * If the dst is not allowed by the higher-level topology, this method provides
+     * the topologically equivalent broadcast port.  
+     * @param src
+     * @param dst
+     * @return the allowed broadcast port
+     */
+    public NodePortTuple getAllowedOutgoingBroadcastPort(NodePortTuple src, NodePortTuple dst);
+    
     public boolean isIncomingBroadcastAllowed(long sw, short portId);
 
     public boolean isInSameBroadcastDomain(long s1, short p1, long s2, short p2);
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index cd0392a3d..e36ef9411 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -370,6 +370,11 @@ IRoutingService, ILinkDiscoveryListener {
         return currentInstance.isAllowed(sw, portId);
     }
 
+    @Override
+    public NodePortTuple getAllowedOutgoingBroadcastPort(NodePortTuple src, NodePortTuple dst) {
+    	return null;
+    }
+    
     @Override
     public boolean isIncomingBroadcastAllowed(long sw, short portId) {
         return currentInstance.isIncomingBroadcastAllowedOnSwitchPort(sw, portId);
-- 
GitLab