From b46f69023caa58f9ba8df74451d590158481da96 Mon Sep 17 00:00:00 2001
From: Srinivasan Ramasubramanian <srini@bigswitch.com>
Date: Mon, 10 Sep 2012 19:08:25 -0700
Subject: [PATCH] If an attachment point port from packet-in does not replace
 already known attachment point, put it in oldAP list only if it was picked up
 from oldAP list.  Otherwise, ignore the attachment point.

---
 .../floodlightcontroller/devicemanager/internal/Device.java  | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
index be2ef2672..a5e855738 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
@@ -329,6 +329,7 @@ entity.getLastSeenTimestamp().getTime());
         ITopologyService topology = deviceManager.topology;
         List<AttachmentPoint> oldAPList;
         List<AttachmentPoint> apList;
+        boolean oldAPFlag = false;
 
         if (!deviceManager.isValidAttachmentPoint(sw, port)) return false;
         AttachmentPoint newAP = new AttachmentPoint(sw, port, lastSeen);
@@ -346,6 +347,7 @@ entity.getLastSeenTimestamp().getTime());
             newAP = oldAPList.remove(index);
             newAP.setLastSeen(lastSeen);
             this.oldAPs = oldAPList;
+            oldAPFlag = true;
             log.debug("DEVICE_MOVE: OldAPs changed for device: {}", oldAPList);
         }
 
@@ -404,7 +406,8 @@ entity.getLastSeenTimestamp().getTime());
             // possible duplicates.
             oldAPList = new ArrayList<AttachmentPoint>();
             if (oldAPs != null) oldAPList.addAll(oldAPs);
-            oldAPList.add(newAP);
+	    // Add ot oldAPList only if it was picked up from the oldAPList
+            if (oldAPFlag) oldAPList.add(newAP);
             log.debug("DEVICE_MOVED: New attachment point {} does not" +
                     " replace already existing one {}.", newAP, oldAP);
             this.oldAPs = oldAPList;
-- 
GitLab