diff options
author | Chalard Jean <jchalard@google.com> | 2017-10-06 09:37:38 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-10-06 09:37:38 +0000 |
commit | ed8d236319a112a0b19b1f05ea55a90ba93e8aa2 (patch) | |
tree | f7436f5e1dc6105529cdaa7fccccb4c69abeb280 | |
parent | 3506aaf99272666aa6fdf925b17536b946c7fca1 (diff) | |
parent | e5659bd316d20ab1292daeac6d9a91ac00573d33 (diff) |
Merge "Add some useful helpers and constants."
3 files changed, 37 insertions, 0 deletions
diff --git a/core/java/com/android/internal/util/BitUtils.java b/core/java/com/android/internal/util/BitUtils.java index 1b354d0d9df0..eabe3b910b78 100644 --- a/core/java/com/android/internal/util/BitUtils.java +++ b/core/java/com/android/internal/util/BitUtils.java @@ -91,6 +91,10 @@ public final class BitUtils { return s & 0xffff; } + public static int uint16(byte hi, byte lo) { + return ((hi & 0xff) << 8) | (lo & 0xff); + } + public static long uint32(int i) { return i & 0xffffffffL; } diff --git a/services/net/java/android/net/util/NetworkConstants.java b/services/net/java/android/net/util/NetworkConstants.java index 606526816368..5a3a8be923af 100644 --- a/services/net/java/android/net/util/NetworkConstants.java +++ b/services/net/java/android/net/util/NetworkConstants.java @@ -107,6 +107,20 @@ public final class NetworkConstants { public static final int RFC6177_MIN_PREFIX_LENGTH = 48; /** + * ICMP common (v4/v6) constants. + * + * See also: + * - https://tools.ietf.org/html/rfc792 + * - https://tools.ietf.org/html/rfc4443 + */ + public static final int ICMP_HEADER_TYPE_OFFSET = 0; + public static final int ICMP_HEADER_CODE_OFFSET = 1; + public static final int ICMP_HEADER_CHECKSUM_OFFSET = 2; + public static final int ICMP_ECHO_IDENTIFIER_OFFSET = 4; + public static final int ICMP_ECHO_SEQUENCE_NUMBER_OFFSET = 6; + public static final int ICMP_ECHO_DATA_OFFSET = 8; + + /** * ICMPv6 constants. * * See also: diff --git a/tests/net/java/com/android/internal/util/BitUtilsTest.java b/tests/net/java/com/android/internal/util/BitUtilsTest.java index 0ad8a21f7712..f4dc12ab8348 100644 --- a/tests/net/java/com/android/internal/util/BitUtilsTest.java +++ b/tests/net/java/com/android/internal/util/BitUtilsTest.java @@ -56,6 +56,25 @@ public class BitUtilsTest { } @Test + public void testUnsignedShortComposition() { + byte b0 = 0; + byte b1 = 1; + byte b2 = 2; + byte b10 = 10; + byte b16 = 16; + byte b128 = -128; + byte b224 = -32; + byte b255 = -1; + assertEquals(0x0000, uint16(b0, b0)); + assertEquals(0xffff, uint16(b255, b255)); + assertEquals(0x0a01, uint16(b10, b1)); + assertEquals(0x8002, uint16(b128, b2)); + assertEquals(0x01ff, uint16(b1, b255)); + assertEquals(0x80ff, uint16(b128, b255)); + assertEquals(0xe010, uint16(b224, b16)); + } + + @Test public void testUnsignedIntWideningConversions() { assertEquals(0, uint32(0)); assertEquals(1, uint32(1)); |