X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fpacket%2FIPv4.java;h=1e2f4277c1f4035b873c61502a43bdc1e6d6fe4c;hb=31045ff2b7b0106f7e7ef7198bed882131127f81;hp=44318aab8c5c1626eb787b960acfaa3ede7bea29;hpb=20d6b967b3d425a4514000c7e77b2e5339763ba8;p=controller.git diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java index 44318aab8c..1e2f4277c1 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java @@ -378,9 +378,9 @@ public class IPv4 extends Packet { * @param checksum the checksum to set */ /*public IPv4 setChecksum() { - short ipChecksum = computeChecksum(); + short ipChecksum = computeChecksum(); byte[] checksum = BitBufferHelper.toByteArray(ipChecksum); - fieldValues.put(CHECKSUM, checksum); + fieldValues.put(CHECKSUM, checksum); return this; }*/ @@ -444,7 +444,7 @@ public class IPv4 extends Packet { /** * Computes the IPv4 header checksum on the passed stream of bytes * representing the packet - * + * * @param data * The byte stream * @param offset @@ -455,7 +455,7 @@ public class IPv4 extends Packet { int end = start + getHeaderLen(); short checkSum = (short) 0; int sum = 0, carry = 0, finalSum = 0; - int parsedHex = 0; + int wordData; int checksumStart = start + (getfieldOffset(CHECKSUM) / NetUtils.NumBitsInAByte); @@ -464,14 +464,8 @@ public class IPv4 extends Packet { if (i == checksumStart) { continue; } - StringBuffer sbuffer = new StringBuffer(); - sbuffer.append(String.format("%02X", data[i])); - if (i < (data.length - 1)) { - sbuffer.append(String.format("%02X", data[i + 1])); - } - - parsedHex = Integer.valueOf(sbuffer.toString(), 16); - sum += parsedHex; + wordData = ((data[i] << 8) & 0xFF00) + (data[i + 1] & 0xFF); + sum = sum + wordData; } carry = (sum >> 16) & 0xFF; finalSum = (sum & 0xFFFF) + carry;