From f93b58b9fbb605cacf26a82922bcaaf132363569 Mon Sep 17 00:00:00 2001 From: Enrico Joerns Date: Fri, 29 Aug 2014 12:43:48 +0200 Subject: [PATCH] [cooja] Get rid of all those redundant IP address to String functions Commonly use the String representation functions of IPUtils. --- .../contikios/cooja/interfaces/IPAddress.java | 44 ++----------------- .../cooja/plugins/BufferListener.java | 13 ++---- .../plugins/analyzers/IPHCPacketAnalyzer.java | 15 ++----- .../plugins/analyzers/IPv6PacketAnalyzer.java | 16 ++----- 4 files changed, 12 insertions(+), 76 deletions(-) diff --git a/tools/cooja/java/org/contikios/cooja/interfaces/IPAddress.java b/tools/cooja/java/org/contikios/cooja/interfaces/IPAddress.java index 67fd284e3..b9834aacc 100644 --- a/tools/cooja/java/org/contikios/cooja/interfaces/IPAddress.java +++ b/tools/cooja/java/org/contikios/cooja/interfaces/IPAddress.java @@ -44,6 +44,7 @@ import org.contikios.cooja.MoteInterface; import org.contikios.cooja.mote.memory.MemoryInterface; import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor; import org.contikios.cooja.mote.memory.VarMemory; +import org.contikios.cooja.util.IPUtils; /** * Read-only interface to IPv4 or IPv6 address. @@ -93,36 +94,14 @@ public class IPAddress extends MoteInterface { */ public String getIPString() { if (isVersion4()) { - String ipString = ""; byte[] ip = moteMem.getByteArray("uip_hostaddr", 4); - for (int i = 0; i < 3; i++) { - ipString += (0xFF & ip[i]) + "."; - } - ipString += (0xFF & ip[3]); - return ipString; + return IPUtils.getIPv4AddressString(ip); } else if (isVersion6()) { - String ipString = getUncompressedIPv6Address(); - return compressIPv6Address(ipString); + return IPUtils.getCompressedIPv6AddressString(getIPv6Address()); } return null; } - public static String compressIPv6Address(String ipString) { - if (ipString.contains(":0000:0000:0000:0000:")) { - ipString = ipString.replace(":0000:0000:0000:0000:", "::"); - } else if (ipString.contains(":0000:0000:0000:")) { - ipString = ipString.replace(":0000:0000:0000:", "::"); - } else if (ipString.contains(":0000:0000:")) { - ipString = ipString.replace(":0000:0000:", "::"); - } else if (ipString.contains(":0000:")) { - ipString = ipString.replace(":0000:", "::"); - } - while (ipString.contains(":0")) { - ipString = ipString.replaceAll(":0", ":"); - } - return ipString; - } - public byte[] getIPv6Address() { byte[] ip = null; @@ -169,23 +148,6 @@ public class IPAddress extends MoteInterface { return ip; } - public static String getUncompressedIPv6AddressString(byte[] ip) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < 14; i += 2) { - sb.append(String.format("%02x%02x:", 0xFF & ip[i + 0], 0xFF & ip[i + 1])); - } - sb.append(String.format("%02x%02x", 0xFF & ip[14], 0xFF & ip[15])); - return sb.toString(); - } - - public String getUncompressedIPv6Address() { - byte[] ip = getIPv6Address(); - if (ip == null) { - return ""; - } - return getUncompressedIPv6AddressString(ip); - } - /** * @return True if mote has an IPv4 address */ diff --git a/tools/cooja/java/org/contikios/cooja/plugins/BufferListener.java b/tools/cooja/java/org/contikios/cooja/plugins/BufferListener.java index aa668b66b..2a67d0243 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/BufferListener.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/BufferListener.java @@ -104,6 +104,7 @@ import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor; import org.contikios.cooja.mote.memory.VarMemory; import org.contikios.cooja.motes.AbstractEmulatedMote; import org.contikios.cooja.util.ArrayQueue; +import org.contikios.cooja.util.IPUtils; import org.contikios.cooja.util.StringUtils; /** @@ -1696,7 +1697,7 @@ public class BufferListener extends VisPlugin { } else { mem = ba.mem; } - return IPAddress.compressIPv6Address(StringUtils.toHex(mem, 2).replaceAll(" ", ":")); + return IPUtils.getCompressedIPv6AddressString(mem); } } @@ -1708,15 +1709,7 @@ public class BufferListener extends VisPlugin { if (ba.mem.length < 4) { return "[must monitor at least 4 bytes]"; } - StringBuilder sb = new StringBuilder(); - sb.append(0xff&ba.mem[0]); - sb.append("."); - sb.append(0xff&ba.mem[1]); - sb.append("."); - sb.append(0xff&ba.mem[2]); - sb.append("."); - sb.append(0xff&ba.mem[3]); - return sb.toString(); + return IPUtils.getIPv4AddressString(ba.mem); } } diff --git a/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPHCPacketAnalyzer.java b/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPHCPacketAnalyzer.java index b6121c6ce..80b1c72cb 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPHCPacketAnalyzer.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPHCPacketAnalyzer.java @@ -1,6 +1,6 @@ package org.contikios.cooja.plugins.analyzers; -import org.contikios.cooja.util.StringUtils; +import org.contikios.cooja.util.IPUtils; public class IPHCPacketAnalyzer extends PacketAnalyzer { @@ -466,9 +466,9 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer { .append(", FL = ").append(flowLabel) .append("
"); verbose.append("From "); - printAddress(verbose, srcAddress); + IPUtils.getUncompressedIPv6AddressString(verbose, srcAddress); verbose.append(" to "); - printAddress(verbose, destAddress); + IPUtils.getUncompressedIPv6AddressString(verbose, destAddress); if (error != null) { verbose.append(" ").append(error); } @@ -496,13 +496,4 @@ public class IPHCPacketAnalyzer extends PacketAnalyzer { } } - public static void printAddress(StringBuilder out, byte[] address) { - for (int i = 0; i < 16; i += 2) { - out.append(StringUtils.toHex((byte) (address[i] & 0xff)) - + StringUtils.toHex((byte) (address[i + 1] & 0xff))); - if (i < 14) { - out.append(":"); - } - } - } } diff --git a/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPv6PacketAnalyzer.java b/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPv6PacketAnalyzer.java index 0d33b0bd3..4ecc99e4a 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPv6PacketAnalyzer.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/analyzers/IPv6PacketAnalyzer.java @@ -1,6 +1,6 @@ package org.contikios.cooja.plugins.analyzers; -import org.contikios.cooja.util.StringUtils; +import org.contikios.cooja.util.IPUtils; public class IPv6PacketAnalyzer extends PacketAnalyzer { @@ -60,23 +60,13 @@ public class IPv6PacketAnalyzer extends PacketAnalyzer { .append(" TC = ").append(trafficClass) .append(" FL: ").append(flowLabel).append("
"); verbose.append("From "); - printAddress(verbose, srcAddress); + IPUtils.getUncompressedIPv6AddressString(verbose, srcAddress); verbose.append(" to "); - printAddress(verbose, destAddress); + IPUtils.getUncompressedIPv6AddressString(verbose, destAddress); packet.lastDispatch = (byte) (proto & 0xff); packet.level = APPLICATION_LEVEL; return ANALYSIS_OK_CONTINUE; } - public static void printAddress(StringBuilder out, byte[] address) { - for (int i = 0; i < 16; i += 2) { - out.append(StringUtils.toHex((byte) (address[i] & 0xff)) - + StringUtils.toHex((byte) (address[i + 1] & 0xff))); - if (i < 14) { - out.append(":"); - } - } - } - }