Loading packages/Connectivity/framework/src/android/net/apf/ApfCapabilities.java +4 −26 Original line number Diff line number Diff line Loading @@ -131,43 +131,21 @@ public final class ApfCapabilities implements Parcelable { * @return Whether the APF Filter in the device should filter out IEEE 802.3 Frames. */ public static boolean getApfDrop8023Frames() { // TODO(b/183076074): remove reading resources from system resources // TODO: deprecate/remove this method (now unused in the platform), as the resource was // moved to NetworkStack. final Resources systemRes = Resources.getSystem(); final int id = systemRes.getIdentifier("config_apfDrop802_3Frames", "bool", "android"); return systemRes.getBoolean(id); } /** * @return Whether the APF Filter in the device should filter out IEEE 802.3 Frames. * @hide */ public static boolean getApfDrop8023Frames(@NonNull Context context) { final ConnectivityResources res = getResources(context); // TODO(b/183076074): use R.bool.config_apfDrop802_3Frames directly final int id = res.get().getIdentifier("config_apfDrop802_3Frames", "bool", res.getResourcesContext().getPackageName()); return res.get().getBoolean(id); } /** * @return An array of denylisted EtherType, packets with EtherTypes within it will be dropped. */ public static @NonNull int[] getApfEtherTypeBlackList() { // TODO(b/183076074): remove reading resources from system resources // TODO: deprecate/remove this method (now unused in the platform), as the resource was // moved to NetworkStack. final Resources systemRes = Resources.getSystem(); final int id = systemRes.getIdentifier("config_apfEthTypeBlackList", "array", "android"); return systemRes.getIntArray(id); } /** * @return An array of denylisted EtherType, packets with EtherTypes within it will be dropped. * @hide */ public static @NonNull int[] getApfEtherTypeDenyList(@NonNull Context context) { final ConnectivityResources res = getResources(context); // TODO(b/183076074): use R.array.config_apfEthTypeDenyList directly final int id = res.get().getIdentifier("config_apfEthTypeDenyList", "array", res.getResourcesContext().getPackageName()); return res.get().getIntArray(id); } } packages/Connectivity/service/ServiceConnectivityResources/res/values/config.xml +0 −16 Original line number Diff line number Diff line Loading @@ -52,22 +52,6 @@ <item>12,60000</item><!-- mobile_cbs --> </string-array> <!-- Whether the APF Filter in the device should filter out IEEE 802.3 Frames Those frames are identified by the field Eth-type having values less than 0x600 --> <bool translatable="false" name="config_apfDrop802_3Frames">true</bool> <!-- An array of Denylisted EtherType, packets with EtherTypes within this array will be dropped TODO: need to put proper values, these are for testing purposes only --> <integer-array translatable="false" name="config_apfEthTypeDenyList"> <item>0x88A2</item> <item>0x88A4</item> <item>0x88B8</item> <item>0x88CD</item> <item>0x88E3</item> </integer-array> <!-- Default supported concurrent socket keepalive slots per transport type, used by ConnectivityManager.createSocketKeepalive() for calculating the number of keepalive offload slots that should be reserved for privileged access. This string array should be Loading packages/Connectivity/service/ServiceConnectivityResources/res/values/overlayable.xml +0 −2 Original line number Diff line number Diff line Loading @@ -21,8 +21,6 @@ <item type="string" name="config_networkCaptivePortalServerUrl"/> <item type="integer" name="config_networkTransitionTimeout"/> <item type="array" name="config_wakeonlan_supported_interfaces"/> <item type="bool" name="config_apfDrop802_3Frames"/> <item type="array" name="config_apfEthTypeDenyList"/> <item type="integer" name="config_networkMeteredMultipathPreference"/> <item type="array" name="config_networkSupportedKeepaliveCount"/> <item type="integer" name="config_networkAvoidBadWifi"/> Loading packages/Connectivity/tests/common/java/android/net/apf/ApfCapabilitiesTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.net.apf; import static com.android.testutils.ParcelUtils.assertParcelSane; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; Loading @@ -25,12 +26,17 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import android.content.Context; import android.os.Build; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -39,6 +45,9 @@ import java.util.Arrays; @RunWith(AndroidJUnit4.class) @SmallTest public class ApfCapabilitiesTest { @Rule public final DevSdkIgnoreRule mIgnoreRule = new DevSdkIgnoreRule(); private Context mContext; @Before Loading Loading @@ -85,6 +94,17 @@ public class ApfCapabilitiesTest { assertEquals(shouldDrop8023Frames, actual); } @Test @IgnoreUpTo(Build.VERSION_CODES.R) public void testGetApfDrop8023Frames_S() { // IpClient does not call getApfDrop8023Frames() since S, so any customization of the return // value on S+ is a configuration error as it will not be used by IpClient. assertTrue("android.R.bool.config_apfDrop802_3Frames has been modified to false, but " + "starting from S its value is not used by IpClient. If the modification is " + "intentional, use a runtime resource overlay for the NetworkStack package to " + "overlay com.android.networkstack.R.bool.config_apfDrop802_3Frames instead.", ApfCapabilities.getApfDrop8023Frames()); } @Test public void testGetApfEtherTypeBlackList() { // Get com.android.internal.R.array.config_apfEthTypeBlackList. The test cannot directly Loading @@ -96,4 +116,17 @@ public class ApfCapabilitiesTest { assertNotNull(actual); assertTrue(Arrays.equals(blacklistedEtherTypeArray, actual)); } @Test @IgnoreUpTo(Build.VERSION_CODES.R) public void testGetApfEtherTypeBlackList_S() { // IpClient does not call getApfEtherTypeBlackList() since S, so any customization of the // return value on S+ is a configuration error as it will not be used by IpClient. assertArrayEquals("android.R.array.config_apfEthTypeBlackList has been modified, but " + "starting from S its value is not used by IpClient. If the modification " + "is intentional, use a runtime resource overlay for the NetworkStack " + "package to overlay " + "com.android.networkstack.R.array.config_apfEthTypeDenyList instead.", new int[] { 0x88a2, 0x88a4, 0x88b8, 0x88cd, 0x88e3 }, ApfCapabilities.getApfEtherTypeBlackList()); } } Loading
packages/Connectivity/framework/src/android/net/apf/ApfCapabilities.java +4 −26 Original line number Diff line number Diff line Loading @@ -131,43 +131,21 @@ public final class ApfCapabilities implements Parcelable { * @return Whether the APF Filter in the device should filter out IEEE 802.3 Frames. */ public static boolean getApfDrop8023Frames() { // TODO(b/183076074): remove reading resources from system resources // TODO: deprecate/remove this method (now unused in the platform), as the resource was // moved to NetworkStack. final Resources systemRes = Resources.getSystem(); final int id = systemRes.getIdentifier("config_apfDrop802_3Frames", "bool", "android"); return systemRes.getBoolean(id); } /** * @return Whether the APF Filter in the device should filter out IEEE 802.3 Frames. * @hide */ public static boolean getApfDrop8023Frames(@NonNull Context context) { final ConnectivityResources res = getResources(context); // TODO(b/183076074): use R.bool.config_apfDrop802_3Frames directly final int id = res.get().getIdentifier("config_apfDrop802_3Frames", "bool", res.getResourcesContext().getPackageName()); return res.get().getBoolean(id); } /** * @return An array of denylisted EtherType, packets with EtherTypes within it will be dropped. */ public static @NonNull int[] getApfEtherTypeBlackList() { // TODO(b/183076074): remove reading resources from system resources // TODO: deprecate/remove this method (now unused in the platform), as the resource was // moved to NetworkStack. final Resources systemRes = Resources.getSystem(); final int id = systemRes.getIdentifier("config_apfEthTypeBlackList", "array", "android"); return systemRes.getIntArray(id); } /** * @return An array of denylisted EtherType, packets with EtherTypes within it will be dropped. * @hide */ public static @NonNull int[] getApfEtherTypeDenyList(@NonNull Context context) { final ConnectivityResources res = getResources(context); // TODO(b/183076074): use R.array.config_apfEthTypeDenyList directly final int id = res.get().getIdentifier("config_apfEthTypeDenyList", "array", res.getResourcesContext().getPackageName()); return res.get().getIntArray(id); } }
packages/Connectivity/service/ServiceConnectivityResources/res/values/config.xml +0 −16 Original line number Diff line number Diff line Loading @@ -52,22 +52,6 @@ <item>12,60000</item><!-- mobile_cbs --> </string-array> <!-- Whether the APF Filter in the device should filter out IEEE 802.3 Frames Those frames are identified by the field Eth-type having values less than 0x600 --> <bool translatable="false" name="config_apfDrop802_3Frames">true</bool> <!-- An array of Denylisted EtherType, packets with EtherTypes within this array will be dropped TODO: need to put proper values, these are for testing purposes only --> <integer-array translatable="false" name="config_apfEthTypeDenyList"> <item>0x88A2</item> <item>0x88A4</item> <item>0x88B8</item> <item>0x88CD</item> <item>0x88E3</item> </integer-array> <!-- Default supported concurrent socket keepalive slots per transport type, used by ConnectivityManager.createSocketKeepalive() for calculating the number of keepalive offload slots that should be reserved for privileged access. This string array should be Loading
packages/Connectivity/service/ServiceConnectivityResources/res/values/overlayable.xml +0 −2 Original line number Diff line number Diff line Loading @@ -21,8 +21,6 @@ <item type="string" name="config_networkCaptivePortalServerUrl"/> <item type="integer" name="config_networkTransitionTimeout"/> <item type="array" name="config_wakeonlan_supported_interfaces"/> <item type="bool" name="config_apfDrop802_3Frames"/> <item type="array" name="config_apfEthTypeDenyList"/> <item type="integer" name="config_networkMeteredMultipathPreference"/> <item type="array" name="config_networkSupportedKeepaliveCount"/> <item type="integer" name="config_networkAvoidBadWifi"/> Loading
packages/Connectivity/tests/common/java/android/net/apf/ApfCapabilitiesTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.net.apf; import static com.android.testutils.ParcelUtils.assertParcelSane; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; Loading @@ -25,12 +26,17 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import android.content.Context; import android.os.Build; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -39,6 +45,9 @@ import java.util.Arrays; @RunWith(AndroidJUnit4.class) @SmallTest public class ApfCapabilitiesTest { @Rule public final DevSdkIgnoreRule mIgnoreRule = new DevSdkIgnoreRule(); private Context mContext; @Before Loading Loading @@ -85,6 +94,17 @@ public class ApfCapabilitiesTest { assertEquals(shouldDrop8023Frames, actual); } @Test @IgnoreUpTo(Build.VERSION_CODES.R) public void testGetApfDrop8023Frames_S() { // IpClient does not call getApfDrop8023Frames() since S, so any customization of the return // value on S+ is a configuration error as it will not be used by IpClient. assertTrue("android.R.bool.config_apfDrop802_3Frames has been modified to false, but " + "starting from S its value is not used by IpClient. If the modification is " + "intentional, use a runtime resource overlay for the NetworkStack package to " + "overlay com.android.networkstack.R.bool.config_apfDrop802_3Frames instead.", ApfCapabilities.getApfDrop8023Frames()); } @Test public void testGetApfEtherTypeBlackList() { // Get com.android.internal.R.array.config_apfEthTypeBlackList. The test cannot directly Loading @@ -96,4 +116,17 @@ public class ApfCapabilitiesTest { assertNotNull(actual); assertTrue(Arrays.equals(blacklistedEtherTypeArray, actual)); } @Test @IgnoreUpTo(Build.VERSION_CODES.R) public void testGetApfEtherTypeBlackList_S() { // IpClient does not call getApfEtherTypeBlackList() since S, so any customization of the // return value on S+ is a configuration error as it will not be used by IpClient. assertArrayEquals("android.R.array.config_apfEthTypeBlackList has been modified, but " + "starting from S its value is not used by IpClient. If the modification " + "is intentional, use a runtime resource overlay for the NetworkStack " + "package to overlay " + "com.android.networkstack.R.array.config_apfEthTypeDenyList instead.", new int[] { 0x88a2, 0x88a4, 0x88b8, 0x88cd, 0x88e3 }, ApfCapabilities.getApfEtherTypeBlackList()); } }