From 774cd0b23e9257189a75adecc3226483f3d9128e Mon Sep 17 00:00:00 2001
From: Vishnu Emmadi <vishnu.emmadi@bigswitch.com>
Date: Mon, 27 May 2013 14:14:44 -0700
Subject: [PATCH] BVS-447 Flow Path Visualization

Implemented backend for the REST API to retrieve the flow path between a pair of hosts
---
 .../linkdiscovery/ILinkDiscoveryService.java       |  7 +++++++
 .../linkdiscovery/LinkInfo.java                    |  6 ++++++
 .../internal/LinkDiscoveryManager.java             | 14 +++++++++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
index 1ad6f4320..3773efd71 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
@@ -40,6 +40,13 @@ public interface ILinkDiscoveryService extends IFloodlightService {
      */
     public Map<Link, LinkInfo> getLinks();
 
+    /**
+     * Retrieves the link info for a given link
+     * @param link link for which the link info should be returned
+     * @return the link info for the given link
+     */
+    public LinkInfo getLinkInfo(Link link);
+
     /**
      * Returns link type of a given link
      * @param info
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java b/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java
index a816d47ab..0230b3bbd 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java
@@ -40,6 +40,12 @@ public class LinkInfo {
         this.lastBddpReceivedTime = null;
     }
 
+    public LinkInfo(LinkInfo fromLinkInfo) {
+        this.firstSeenTime = fromLinkInfo.getFirstSeenTime();
+        this.lastLldpReceivedTime = fromLinkInfo.getUnicastValidTime();
+        this.lastBddpReceivedTime = fromLinkInfo.getMulticastValidTime();
+    }
+
     protected Long firstSeenTime;
     protected Long lastLldpReceivedTime; /* Standard LLLDP received time */
     protected Long lastBddpReceivedTime; /* Modified LLDP received time  */
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index 78bec78e8..6ddce3885 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -1,4 +1,4 @@
-/**
+floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java/**
  *    Copyright 2011, Big Switch Networks, Inc.
  *    Originally created by David Erickson, Stanford University
  *
@@ -508,6 +508,18 @@ public class LinkDiscoveryManager implements IOFMessageListener,
         return result;
     }
 
+    @Override
+    public LinkInfo getLinkInfo(Link link) {
+        lock.readLock().lock();
+        LinkInfo linkInfo = links.get(link);
+        LinkInfo retLinkInfo = null;
+        if (linkInfo != null) {
+            retLinkInfo  = new LinkInfo(linkInfo);
+        }
+        lock.readLock().unlock();
+        return retLinkInfo;
+    }
+
     @Override
     public String getName() {
         return MODULE_NAME;
-- 
GitLab