Merge "Add a helper function to send RTM_NEWADDR netlink message to kernel."
diff --git a/staticlibs/framework/com/android/net/module/util/DnsPacket.java b/staticlibs/framework/com/android/net/module/util/DnsPacket.java
index 702d114..79ca3a3 100644
--- a/staticlibs/framework/com/android/net/module/util/DnsPacket.java
+++ b/staticlibs/framework/com/android/net/module/util/DnsPacket.java
@@ -252,7 +252,7 @@
// Refer to RFC 1035 section 2.3.4 for MAXNAMESIZE.
// NAME_NORMAL and NAME_COMPRESSION are used for checking name compression,
// refer to rfc 1035 section 4.1.4.
- private static final int MAXNAMESIZE = 255;
+ public static final int MAXNAMESIZE = 255;
public static final int NAME_NORMAL = 0;
public static final int NAME_COMPRESSION = 0xC0;
diff --git a/staticlibs/testutils/devicetests/com/android/testutils/NatPacketForwarderBase.java b/staticlibs/testutils/devicetests/com/android/testutils/NatPacketForwarderBase.java
index 85c6493..0a2b5d4 100644
--- a/staticlibs/testutils/devicetests/com/android/testutils/NatPacketForwarderBase.java
+++ b/staticlibs/testutils/devicetests/com/android/testutils/NatPacketForwarderBase.java
@@ -151,7 +151,8 @@
private void processPacket() {
final int len = PacketReflectorUtil.readPacket(mSrcFd, mBuf);
if (len < 1) {
- throw new IllegalStateException("Unexpected buffer length: " + len);
+ // Usually happens when socket read is being interrupted, e.g. stopping PacketForwarder.
+ return;
}
final int version = mBuf[0] >>> 4;
diff --git a/staticlibs/testutils/devicetests/com/android/testutils/PacketReflectorUtil.kt b/staticlibs/testutils/devicetests/com/android/testutils/PacketReflectorUtil.kt
index b028045..498b1a3 100644
--- a/staticlibs/testutils/devicetests/com/android/testutils/PacketReflectorUtil.kt
+++ b/staticlibs/testutils/devicetests/com/android/testutils/PacketReflectorUtil.kt
@@ -20,11 +20,12 @@
import android.system.ErrnoException
import android.system.Os
+import android.system.OsConstants
import com.android.net.module.util.IpUtils
import com.android.testutils.PacketReflector.IPV4_HEADER_LENGTH
import com.android.testutils.PacketReflector.IPV6_HEADER_LENGTH
import java.io.FileDescriptor
-import java.io.IOException
+import java.io.InterruptedIOException
import java.net.InetAddress
import java.nio.ByteBuffer
@@ -32,8 +33,15 @@
return try {
Os.read(fd, buf, 0, buf.size)
} catch (e: ErrnoException) {
- -1
- } catch (e: IOException) {
+ // Ignore normal use cases such as the EAGAIN error indicates that the read operation
+ // cannot be completed immediately, or the EINTR error indicates that the read
+ // operation was interrupted by a signal.
+ if (e.errno == OsConstants.EAGAIN || e.errno == OsConstants.EINTR) {
+ -1
+ } else {
+ throw e
+ }
+ } catch (e: InterruptedIOException) {
-1
}
}