summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Fuller <nfuller@google.com>2019-06-21 09:30:44 +0100
committerNeil Fuller <nfuller@google.com>2019-06-24 09:03:34 +0100
commiteee540c10f7a88599ac53e0a8ec81e3883dc7b6f (patch)
tree7d8bc2f7221b714cf8a818f106244daa2c071c6a
parentc305f5e3bbcd6a6296497a60ef51f78431383b85 (diff)
General tidy up of android.system
This commit changes StructIcmpHdr to the byte[] factory that it effectively already is. StructIcmpHdr is not referenced by anything in android.system.Os so is not the same as other Struct classes. It also add toString() to structs / containers where missing and makes a field final. Bug: 135660232 Test: build / boot Test: atest CtsLibcoreTestCases:libcore.android.system.OsTest Change-Id: I84985c817234aadc2380a08a6afa71400366a6f6
-rw-r--r--luni/src/main/java/android/system/IcmpHeaders.java (renamed from luni/src/main/java/android/system/StructIcmpHdr.java)41
-rw-r--r--luni/src/main/java/android/system/Int32Ref.java6
-rw-r--r--luni/src/main/java/android/system/Int64Ref.java6
-rw-r--r--luni/src/main/java/android/system/StructIfaddrs.java6
-rw-r--r--luni/src/main/java/android/system/UnixSocketAddress.java2
-rw-r--r--non_openjdk_java_files.bp2
-rw-r--r--ojluni/src/main/java/java/net/Inet6AddressImpl.java4
7 files changed, 42 insertions, 25 deletions
diff --git a/luni/src/main/java/android/system/StructIcmpHdr.java b/luni/src/main/java/android/system/IcmpHeaders.java
index 87ae679da6..2203d4095d 100644
--- a/luni/src/main/java/android/system/StructIcmpHdr.java
+++ b/luni/src/main/java/android/system/IcmpHeaders.java
@@ -19,22 +19,26 @@ package android.system;
import static android.system.OsConstants.ICMP6_ECHO_REQUEST;
import static android.system.OsConstants.ICMP_ECHO;
+import java.io.FileDescriptor;
+import java.net.SocketAddress;
+
/**
- * Corresponds to C's {@code struct icmphdr} from linux/icmp.h and {@code struct icmp6hdr} from
- * linux/icmpv6.h
+ * A utility class that can create ICMP header bytes corresponding to C's {@code struct icmphdr}
+ * from linux/icmp.h and {@code struct icmp6hdr} from linux/icmpv6.h. The bytes can be passed to
+ * methods like {@link Os#sendto(FileDescriptor, byte[], int, int, int, SocketAddress)}.
*
* @hide
*/
-public final class StructIcmpHdr {
- private byte[] packet;
+public final class IcmpHeaders {
- private StructIcmpHdr() {
- packet = new byte[8];
- }
+ private IcmpHeaders() {}
- /*
- * Echo or Echo Reply Message
+ /**
+ * Creates the header bytes for an {@link OsConstants#ICMP_ECHO} or
+ * {@link OsConstants#ICMP6_ECHO_REQUEST} message. Code, checksum and identifier are left as
+ * zeros.
*
+ * <pre>
* 0 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -42,21 +46,16 @@ public final class StructIcmpHdr {
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Identifier | Sequence Number |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Data ...
- * +-+-+-+-+-
+ * </pre>
*/
- public static StructIcmpHdr IcmpEchoHdr(boolean ipv4, int seq) {
- StructIcmpHdr hdr = new StructIcmpHdr();
- hdr.packet[0] = ipv4 ? (byte) ICMP_ECHO : (byte) ICMP6_ECHO_REQUEST;
+ public static byte[] createIcmpEchoHdr(boolean ipv4, int seq) {
+ byte[] bytes = new byte[8];
+ bytes[0] = ipv4 ? (byte) ICMP_ECHO : (byte) ICMP6_ECHO_REQUEST;
// packet[1]: Code is always zero.
// packet[2,3]: Checksum is computed by kernel.
// packet[4,5]: ID (= port) inserted by kernel.
- hdr.packet[6] = (byte) (seq >> 8);
- hdr.packet[7] = (byte) seq;
- return hdr;
- }
-
- public byte[] getBytes() {
- return packet.clone();
+ bytes[6] = (byte) (seq >> 8);
+ bytes[7] = (byte) seq;
+ return bytes;
}
}
diff --git a/luni/src/main/java/android/system/Int32Ref.java b/luni/src/main/java/android/system/Int32Ref.java
index 8f4a9496ef..8ffcfc5f25 100644
--- a/luni/src/main/java/android/system/Int32Ref.java
+++ b/luni/src/main/java/android/system/Int32Ref.java
@@ -16,6 +16,8 @@
package android.system;
+import libcore.util.Objects;
+
import dalvik.annotation.compat.UnsupportedAppUsage;
/**
@@ -32,4 +34,8 @@ public class Int32Ref {
public Int32Ref(int value) {
this.value = value;
}
+
+ @Override public String toString() {
+ return Objects.toString(this);
+ }
}
diff --git a/luni/src/main/java/android/system/Int64Ref.java b/luni/src/main/java/android/system/Int64Ref.java
index f42450d868..77edaf0876 100644
--- a/luni/src/main/java/android/system/Int64Ref.java
+++ b/luni/src/main/java/android/system/Int64Ref.java
@@ -16,6 +16,8 @@
package android.system;
+import libcore.util.Objects;
+
/**
* A signed 64bit integer reference suitable for passing to lower-level system calls.
*/
@@ -25,4 +27,8 @@ public class Int64Ref {
public Int64Ref(long value) {
this.value = value;
}
+
+ @Override public String toString() {
+ return Objects.toString(this);
+ }
}
diff --git a/luni/src/main/java/android/system/StructIfaddrs.java b/luni/src/main/java/android/system/StructIfaddrs.java
index 7769f282a2..81d180abf5 100644
--- a/luni/src/main/java/android/system/StructIfaddrs.java
+++ b/luni/src/main/java/android/system/StructIfaddrs.java
@@ -16,6 +16,8 @@
package android.system;
+import libcore.util.Objects;
+
import java.net.InetAddress;
/**
@@ -44,4 +46,8 @@ public final class StructIfaddrs {
this.ifa_broadaddr = ifa_broadaddr;
this.hwaddr = hwaddr;
}
+
+ @Override public String toString() {
+ return Objects.toString(this);
+ }
}
diff --git a/luni/src/main/java/android/system/UnixSocketAddress.java b/luni/src/main/java/android/system/UnixSocketAddress.java
index be689b36de..bd211eff4a 100644
--- a/luni/src/main/java/android/system/UnixSocketAddress.java
+++ b/luni/src/main/java/android/system/UnixSocketAddress.java
@@ -35,7 +35,7 @@ public final class UnixSocketAddress extends SocketAddress {
// 1) pathname: 0 < sun_path.length <= NAMED_PATH_LENGTH, sun_path[0] != 0.
// 2) unnamed: sun_path = [].
// 3) abstract: 0 < sun_path.length <= NAMED_PATH_LENGTH, sun_path[0] == 0.
- private byte[] sun_path;
+ private final byte[] sun_path;
/** This constructor is also used from JNI. */
private UnixSocketAddress(byte[] sun_path) {
diff --git a/non_openjdk_java_files.bp b/non_openjdk_java_files.bp
index 1952687571..27fabecf6f 100644
--- a/non_openjdk_java_files.bp
+++ b/non_openjdk_java_files.bp
@@ -3,6 +3,7 @@ filegroup {
srcs: [
"luni/src/main/java/android/system/ErrnoException.java",
"luni/src/main/java/android/system/GaiException.java",
+ "luni/src/main/java/android/system/IcmpHeaders.java",
"luni/src/main/java/android/system/Int32Ref.java",
"luni/src/main/java/android/system/Int64Ref.java",
"luni/src/main/java/android/system/NetlinkSocketAddress.java",
@@ -14,7 +15,6 @@ filegroup {
"luni/src/main/java/android/system/StructCapUserHeader.java",
"luni/src/main/java/android/system/StructFlock.java",
"luni/src/main/java/android/system/StructGroupReq.java",
- "luni/src/main/java/android/system/StructIcmpHdr.java",
"luni/src/main/java/android/system/StructIfaddrs.java",
"luni/src/main/java/android/system/StructLinger.java",
"luni/src/main/java/android/system/StructPasswd.java",
diff --git a/ojluni/src/main/java/java/net/Inet6AddressImpl.java b/ojluni/src/main/java/java/net/Inet6AddressImpl.java
index bb722f3df2..29ccda2a54 100644
--- a/ojluni/src/main/java/java/net/Inet6AddressImpl.java
+++ b/ojluni/src/main/java/java/net/Inet6AddressImpl.java
@@ -27,7 +27,7 @@ package java.net;
import android.system.ErrnoException;
import android.system.GaiException;
import android.system.StructAddrinfo;
-import android.system.StructIcmpHdr;
+import android.system.IcmpHeaders;
import dalvik.system.BlockGuard;
@@ -263,7 +263,7 @@ class Inet6AddressImpl implements InetAddressImpl {
IoBridge.setSocketOption(fd, SocketOptions.SO_TIMEOUT, sockTo);
- packet = StructIcmpHdr.IcmpEchoHdr(isIPv4, seq).getBytes();
+ packet = IcmpHeaders.createIcmpEchoHdr(isIPv4, seq);
IoBridge.sendto(fd, packet, 0, packet.length, 0, addr, 0);
final int icmpId = IoBridge.getLocalInetSocketAddress(fd).getPort();