diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java index afbbb57d4e822d25fb991ba11f5f24844ef54d7d..780e56f3efe539536d929bf9a31e5fe5842f0b8d 100755 --- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java +++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java @@ -37,6 +37,7 @@ import net.floodlightcontroller.devicemanager.IDevice; import net.floodlightcontroller.devicemanager.IEntityClass; import net.floodlightcontroller.devicemanager.SwitchPort; import net.floodlightcontroller.packet.Ethernet; +import net.floodlightcontroller.packet.IPv4; import net.floodlightcontroller.topology.ITopologyService; /** @@ -486,7 +487,22 @@ public class Device implements IDevice { @Override public String toString() { - return "Device [entityClass=" + entityClass.getName() + - " entities=" + Arrays.toString(entities) + "]"; + StringBuilder builder = new StringBuilder(); + builder.append("Device [entityClass="); + builder.append(entityClass.getName()); + builder.append(", MAC="); + builder.append(macAddressString); + builder.append(", IPs=["); + boolean isFirst = true; + for (Integer ip: getIPv4Addresses()) { + if (!isFirst) + builder.append(", "); + isFirst = false; + builder.append(IPv4.fromIPv4Address(ip)); + } + builder.append("], APs="); + builder.append(Arrays.toString(getAttachmentPoints(true))); + builder.append("]"); + return builder.toString(); } } diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java index e1e19a6c997517d6eda26582755565b158a2f504..544e8b9bd63a08e0939a94f59aa2b0be4ac34c8d 100755 --- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java +++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java @@ -228,6 +228,15 @@ IFlowReconcileListener, IInfoProvider, IHAListener { this.change = change; this.fieldsChanged = fieldsChanged; } + + @Override + public String toString() { + String devIdStr = device.getEntityClass().getName() + "::" + + device.getMACAddressString(); + return "DeviceUpdate [device=" + devIdStr + ", change=" + change + + ", fieldsChanged=" + fieldsChanged + "]"; + } + } /** @@ -593,14 +602,18 @@ IFlowReconcileListener, IInfoProvider, IHAListener { // Find the device matching the destination from the entity // classes of the source. Entity dstEntity = getEntityFromFlowMod(ofm.ofmWithSwDpid, false); - logger.trace("DeviceManager dstEntity {}", dstEntity); + Device dstDevice = null; if (dstEntity != null) { - Device dstDevice = - findDestByEntity(srcDevice, dstEntity); - logger.trace("DeviceManager dstDevice {}", dstDevice); + dstDevice = findDestByEntity(srcDevice, dstEntity); if (dstDevice != null) fcStore.put(ofm.cntx, CONTEXT_DST_DEVICE, dstDevice); } + if (logger.isTraceEnabled()) { + logger.trace("Reconciling flow: match={}, srcDev={}, " + + "dstEntity={}, dstDev={}", + new Object[] { ofm.ofmWithSwDpid, srcDevice, + dstEntity, dstDevice } ); + } } return Command.CONTINUE; } @@ -1221,6 +1234,9 @@ IFlowReconcileListener, IInfoProvider, IHAListener { if (updates == null) return; DeviceUpdate update = null; while (null != (update = updates.poll())) { + if (logger.isTraceEnabled()) { + logger.trace("Dispatching device update: {}", update); + } for (IDeviceListener listener : deviceListeners) { switch (update.change) { case ADD: diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java index 8496f0a8e4f9a5e4b670969599e98f04adacb218..5904a6108fde23831647e0ea10d7cc0065fe51c1 100644 --- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java +++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java @@ -211,12 +211,28 @@ public class Entity implements Comparable<Entity> { return true; } + + @Override public String toString() { - return "Entity [macAddress=" + HexString.toHexString(macAddress, 6) - + ", ipv4Address=" - + IPv4.fromIPv4Address(ipv4Address==null ? 0 : ipv4Address.intValue()) + ", vlan=" + vlan + ", switchDPID=" - + switchDPID + ", switchPort=" + switchPort + "]"; + StringBuilder builder = new StringBuilder(); + builder.append("Entity [macAddress="); + builder.append(HexString.toHexString(macAddress, 6)); + builder.append(", ipv4Address="); + builder.append(IPv4.fromIPv4Address(ipv4Address==null ? + 0 : ipv4Address.intValue())); + builder.append(", vlan="); + builder.append(vlan); + builder.append(", switchDPID="); + builder.append(switchDPID); + builder.append(", switchPort="); + builder.append(switchPort); + builder.append(", lastSeenTimestamp="); + builder.append(lastSeenTimestamp.getTime()); + builder.append(", activeSince="); + builder.append(activeSince.getTime()); + builder.append("]"); + return builder.toString(); } @Override