diff options
Diffstat (limited to 'packages/NetworkStack')
5 files changed, 32 insertions, 20 deletions
diff --git a/packages/NetworkStack/Android.bp b/packages/NetworkStack/Android.bp index 62de2ba45455..e15526a571f5 100644 --- a/packages/NetworkStack/Android.bp +++ b/packages/NetworkStack/Android.bp @@ -98,8 +98,6 @@ java_defaults { optimize: { proguard_flags_files: ["proguard.flags"], }, - // The permission configuration *must* be included to ensure security of the device - required: ["NetworkPermissionConfig"], } // Non-updatable network stack running in the system server process for devices not using the module @@ -108,6 +106,10 @@ android_app { defaults: ["NetworkStackAppCommon"], certificate: "platform", manifest: "AndroidManifest_InProcess.xml", + // InProcessNetworkStack is a replacement for NetworkStack + overrides: ["NetworkStack"], + // The permission configuration *must* be included to ensure security of the device + required: ["PlatformNetworkPermissionConfig"], } // Updatable network stack packaged as an application @@ -116,6 +118,9 @@ android_app { defaults: ["NetworkStackAppCommon"], certificate: "networkstack", manifest: "AndroidManifest.xml", + use_embedded_native_libs: true, + // The permission configuration *must* be included to ensure security of the device + required: ["NetworkPermissionConfig"], } genrule { diff --git a/packages/NetworkStack/AndroidManifest.xml b/packages/NetworkStack/AndroidManifest.xml index 252b90fea840..bfcd6c1baba3 100644 --- a/packages/NetworkStack/AndroidManifest.xml +++ b/packages/NetworkStack/AndroidManifest.xml @@ -41,7 +41,7 @@ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" /> <!-- Signature permission defined in NetworkStackStub --> <uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK" /> - <application> + <application android:extractNativeLibs="false"> <service android:name="com.android.server.NetworkStackService"> <intent-filter> <action android:name="android.net.INetworkStackConnector"/> diff --git a/packages/NetworkStack/src/android/net/ip/IpClient.java b/packages/NetworkStack/src/android/net/ip/IpClient.java index dc74c041c35a..266b1b047a90 100644 --- a/packages/NetworkStack/src/android/net/ip/IpClient.java +++ b/packages/NetworkStack/src/android/net/ip/IpClient.java @@ -372,10 +372,6 @@ public class IpClient extends StateMachine { private boolean mMulticastFiltering; private long mStartTimeMillis; - /* This must match the definition in KeepaliveTracker.KeepaliveInfo */ - private static final int TYPE_NATT = 1; - private static final int TYPE_TCP = 2; - /** * Reading the snapshot is an asynchronous operation initiated by invoking * Callback.startReadPacketFilter() and completed when the WiFi Service responds with an @@ -705,7 +701,7 @@ public class IpClient extends StateMachine { * keepalive offload. */ public void addKeepalivePacketFilter(int slot, @NonNull TcpKeepalivePacketDataParcelable pkt) { - sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, TYPE_TCP, pkt); + sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, 0 /* Unused */, pkt); } /** @@ -714,7 +710,7 @@ public class IpClient extends StateMachine { */ public void addNattKeepalivePacketFilter(int slot, @NonNull NattKeepalivePacketDataParcelable pkt) { - sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, TYPE_NATT, pkt); + sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, 0 /* Unused */ , pkt); } /** @@ -1626,13 +1622,12 @@ public class IpClient extends StateMachine { case CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF: { final int slot = msg.arg1; - final int type = msg.arg2; if (mApfFilter != null) { - if (type == TYPE_NATT) { + if (msg.obj instanceof NattKeepalivePacketDataParcelable) { mApfFilter.addNattKeepalivePacketFilter(slot, (NattKeepalivePacketDataParcelable) msg.obj); - } else { + } else if (msg.obj instanceof TcpKeepalivePacketDataParcelable) { mApfFilter.addTcpKeepalivePacketFilter(slot, (TcpKeepalivePacketDataParcelable) msg.obj); } diff --git a/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java b/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java index 85f94e17a088..4767d5574a00 100644 --- a/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java +++ b/packages/NetworkStack/src/com/android/networkstack/util/DnsUtils.java @@ -55,12 +55,23 @@ public class DnsUtils { throws UnknownHostException { final List<InetAddress> result = new ArrayList<InetAddress>(); - result.addAll(Arrays.asList( - getAllByName(dnsResolver, network, host, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP, - timeout))); - result.addAll(Arrays.asList( - getAllByName(dnsResolver, network, host, TYPE_A, FLAG_NO_CACHE_LOOKUP, - timeout))); + try { + result.addAll(Arrays.asList( + getAllByName(dnsResolver, network, host, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP, + timeout))); + } catch (UnknownHostException e) { + // Might happen if the host is v4-only, still need to query TYPE_A + } + try { + result.addAll(Arrays.asList( + getAllByName(dnsResolver, network, host, TYPE_A, FLAG_NO_CACHE_LOOKUP, + timeout))); + } catch (UnknownHostException e) { + // Might happen if the host is v6-only, still need to return AAAA answers + } + if (result.size() == 0) { + throw new UnknownHostException(host); + } return result.toArray(new InetAddress[0]); } diff --git a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java index abfb9c8ae282..26186751c282 100644 --- a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +++ b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java @@ -297,9 +297,10 @@ public class NetworkMonitorTest { setOtherFallbackUrls(TEST_OTHER_FALLBACK_URL); setFallbackSpecs(null); // Test with no fallback spec by default when(mRandom.nextInt()).thenReturn(0); - + // DNS probe timeout should not be defined more than half of HANDLER_TIMEOUT_MS. Otherwise, + // it will fail the test because of timeout expired for querying AAAA and A sequentially. when(mResources.getInteger(eq(R.integer.config_captive_portal_dns_probe_timeout))) - .thenReturn(500); + .thenReturn(200); doAnswer((invocation) -> { URL url = invocation.getArgument(0); |