diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index 805c930e6521d7d3d417f1a897507ea804e8ac10..8189dd2caadd010ec3f7f00a06ebb90f1ba9c58f 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -979,9 +979,15 @@ public class DeviceManagerImpl implements IDeviceManagerService, IOFMessageListe
                     // An exception is thrown if the attachmentPoint is blocked.
                     if (newAttachmentPoint) {
                         attachmentPoint = getNewAttachmentPoint(nd, switchPort);
-                        nd.addAttachmentPoint(attachmentPoint);
-                        evHistAttachmtPt(nd, attachmentPoint.getSwitchPort(),
-                                         EvAction.ADDED, "New AP from pkt-in");
+                        if (attachmentPoint == null) {
+                            newAttachmentPoint = false;
+                        } else {
+                            nd.addAttachmentPoint(attachmentPoint);
+                            evHistAttachmtPt(nd, 
+                                             attachmentPoint.getSwitchPort(),
+                                             EvAction.ADDED, 
+                                             "New AP from pkt-in");
+                        }
                     }
 
                     if (clearAttachmentPoints) {
@@ -1079,6 +1085,16 @@ public class DeviceManagerImpl implements IDeviceManagerService, IOFMessageListe
             }
         }
 
+        if (curAttachmentPoint != null) {
+            Long curDPID = curAttachmentPoint.getSwitchPort().getSw().getId();
+            Short curPort = curAttachmentPoint.getSwitchPort().getPort();
+            boolean sameBD = 
+                    topology.isInSameBroadcastDomain(swPort.getSw().getId(),
+                                                     swPort.getPort(),
+                                                     curDPID, curPort);
+            if (sameBD) return null;
+        }
+        
         // Do we have an old attachment point?
         DeviceAttachmentPoint attachmentPoint = 
                                     device.getOldAttachmentPoint(swPort);
@@ -1116,11 +1132,7 @@ public class DeviceManagerImpl implements IDeviceManagerService, IOFMessageListe
             // If two ports are in the same port-channel, we don't treat it
             // as conflict, but will forward based on the last seen switch-port
             if (!devMgrMaps.inSamePortChannel(swPort,
-                    curAttachmentPoint.getSwitchPort()) && 
-                    !topology.isInSameBroadcastDomain(swPort.getSw().getId(),
-                                                      swPort.getPort(),
-                                                      curAttachmentPoint.getSwitchPort().getSw().getId(),
-                                                      curAttachmentPoint.getSwitchPort().getPort())) {
+                    curAttachmentPoint.getSwitchPort())) {
                 curAttachmentPoint.setConflict(currentDate);
                 if (curAttachmentPoint.isFlapping()) {
                     curAttachmentPoint.setBlocked(true);
diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
index 4f3a47dbfb630a254ccee2f0325bccf843e72290..a3446fc7e3874c96405153e3f3f3f2f9e793d606 100644
--- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
+++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
@@ -223,9 +223,6 @@ public abstract class ForwardingBase implements IOFMessageListener, IDeviceManag
             log.debug("pushRoute flowmod sw={} inPort={} outPort={}",
                       new Object[] { sw, fm.getMatch().getInputPort(), 
                                     ((OFActionOutput)fm.getActions().get(0)).getPort() });
-            log.info("Flow mod sent: Wildcard={} match={}",
-                    Integer.toHexString(fm.getMatch().getWildcards()),
-                    fm.getMatch().toString());
             sw.write(fm, cntx);
             if (doFlush) {
                 sw.flush();
diff --git a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
index e9af403a845bc7ea9dd8ddc3fa720ce788bc357c..bbf0628dda24b159fd84930b25c25b6243cb09cd 100644
--- a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
+++ b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
@@ -544,6 +544,11 @@ public class DeviceManagerImplTest extends FloodlightTestCase {
                            .andReturn(false).atLeastOnce();
         expect(mockTopology.isBroadcastDomainPort(1L, (short)2))
                            .andReturn(false).atLeastOnce();
+        expect(mockTopology.isInSameBroadcastDomain((long)1, (short)1, 
+                                                    (long)1, (short)2)).andReturn(false).anyTimes();
+        expect(mockTopology.isInSameBroadcastDomain((long)1, (short)2, 
+                                                    (long)1, (short)1)).andReturn(false).anyTimes();
+
         deviceManager.setTopology(mockTopology);
 
         // Start recording the replay on the mocks