diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-05 01:34:16 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-05 01:34:16 +0000 |
commit | 84ca7d8196d86ae56b26ad37a6343cf6d0fe4cb5 (patch) | |
tree | 45f98a50c02a132ddf2cec2f20bcf5f1c9c6a458 | |
parent | 32dfa2af9bc383755e3b2a2cd03a6ab105d5f132 (diff) | |
parent | e0b5582e291fd5f74653037f6e6db568a3bde7fe (diff) | |
download | Iwlan-84ca7d8196d86ae56b26ad37a6343cf6d0fe4cb5.tar.gz |
Snap for 10071751 from e0b5582e291fd5f74653037f6e6db568a3bde7fe to udc-qpr1-release
Change-Id: Ibf29b102f5bdac0ce2d94d7e40187a32f5b1e669
4 files changed, 46 insertions, 45 deletions
diff --git a/src/com/google/android/iwlan/epdg/EpdgSelector.java b/src/com/google/android/iwlan/epdg/EpdgSelector.java index 7dda188..52392fd 100644 --- a/src/com/google/android/iwlan/epdg/EpdgSelector.java +++ b/src/com/google/android/iwlan/epdg/EpdgSelector.java @@ -144,7 +144,7 @@ public class EpdgSelector { public interface EpdgSelectorCallback { /*gives priority ordered list of addresses*/ - void onServerListChanged(int transactionId, ArrayList<InetAddress> validIPList); + void onServerListChanged(int transactionId, List<InetAddress> validIPList); void onError(int transactionId, IwlanError error); } diff --git a/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java b/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java index 1656e34..bfe4f95 100644 --- a/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java +++ b/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java @@ -226,8 +226,7 @@ public class EpdgTunnelManager { private final EpdgSelector.EpdgSelectorCallback mSelectorCallback = new EpdgSelector.EpdgSelectorCallback() { @Override - public void onServerListChanged( - int transactionId, ArrayList<InetAddress> validIPList) { + public void onServerListChanged(int transactionId, List<InetAddress> validIPList) { sendSelectionRequestComplete( validIPList, new IwlanError(IwlanError.NO_ERROR), transactionId); } @@ -744,7 +743,7 @@ public class EpdgTunnelManager { TAG, "Bringing up tunnel for apn: " + apnName - + "ePDG : " + + " ePDG: " + mEpdgAddress.getHostAddress()); final int token = incrementAndGetCurrentTokenForApn(apnName); @@ -994,6 +993,12 @@ public class EpdgTunnelManager { } } + // If MOBIKE is configured, ePDGs may force IPv6 UDP encapsulation- as specified by + // RFC 4555- which Android connectivity stack presently does not support. + if (mEpdgAddress instanceof Inet6Address) { + builder.removeIkeOption(IkeSessionParams.IKE_OPTION_MOBIKE); + } + Ike3gppParams.Builder builder3gppParams = null; // TODO(b/239753287): Telus carrier requests DEVICE_IDENTITY, but errors out when parsing @@ -2288,7 +2293,7 @@ public class EpdgTunnelManager { @VisibleForTesting void sendSelectionRequestComplete( - ArrayList<InetAddress> validIPList, IwlanError result, int transactionId) { + List<InetAddress> validIPList, IwlanError result, int transactionId) { mEpdgServerSelectionDuration = System.currentTimeMillis() - mEpdgServerSelectionStartTime; mEpdgServerSelectionStartTime = 0; EpdgSelectorResult epdgSelectorResult = diff --git a/test/com/google/android/iwlan/epdg/EpdgSelectorTest.java b/test/com/google/android/iwlan/epdg/EpdgSelectorTest.java index dc9ee2b..b2d514c 100644 --- a/test/com/google/android/iwlan/epdg/EpdgSelectorTest.java +++ b/test/com/google/android/iwlan/epdg/EpdgSelectorTest.java @@ -514,7 +514,7 @@ public class EpdgSelectorTest { new EpdgSelector.EpdgSelectorCallback() { @Override public void onServerListChanged( - int transactionId, ArrayList<InetAddress> validIPList) { + int transactionId, List<InetAddress> validIPList) { assertEquals(transactionId, 1234); for (InetAddress mInetAddress : validIPList) { diff --git a/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java b/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java index f42fcb0..76ceec8 100644 --- a/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java +++ b/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java @@ -105,23 +105,23 @@ public class EpdgTunnelManagerTest { public static final int DEFAULT_TOKEN = 0; private static final String EPDG_ADDRESS = "127.0.0.1"; + private static final String EPDG_ADDRESS_IPV6 = "2600:387:f:707::1"; private static final String TEST_APN_NAME = "www.xyz.com"; - private static final ArrayList<InetAddress> EXPECTED_LOCAL_ADDRESSES = - new ArrayList<>(List.of(InetAddresses.parseNumericAddress("201.1.100.10"))); - private static final ArrayList<InetAddress> EXPECTED_IPV6_LOCAL_ADDRESSES = - new ArrayList<>(List.of(InetAddresses.parseNumericAddress("2001:db8::1:2"))); - private static final ArrayList<InetAddress> EXPECTED_EPDG_ADDRESSES = - new ArrayList<>(List.of(InetAddresses.parseNumericAddress(EPDG_ADDRESS))); - private static final ArrayList<LinkAddress> EXPECTED_INTERNAL_ADDRESSES = - new ArrayList<>( - List.of( - new LinkAddress( - InetAddresses.parseNumericAddress("198.50.100.10"), 24))); - private static final ArrayList<InetAddress> EXPECTED_PCSCF_ADDRESSES = - new ArrayList<>(List.of(InetAddresses.parseNumericAddress("198.51.100.10"))); - private static final ArrayList<InetAddress> EXPECTED_DNS_ADDRESSES = - new ArrayList<>(List.of(InetAddresses.parseNumericAddress("198.50.100.10"))); + private static final List<InetAddress> EXPECTED_LOCAL_ADDRESSES = + List.of(InetAddresses.parseNumericAddress("201.1.100.10")); + private static final List<InetAddress> EXPECTED_IPV6_LOCAL_ADDRESSES = + List.of(InetAddresses.parseNumericAddress("2001:db8::1:2")); + private static final List<InetAddress> EXPECTED_EPDG_ADDRESSES = + List.of(InetAddresses.parseNumericAddress(EPDG_ADDRESS)); + private static final List<InetAddress> EXPECTED_EPDG_ADDRESSES_IPV6 = + List.of(InetAddresses.parseNumericAddress(EPDG_ADDRESS_IPV6)); + private static final List<LinkAddress> EXPECTED_INTERNAL_ADDRESSES = + List.of(new LinkAddress(InetAddresses.parseNumericAddress("198.50.100.10"), 24)); + private static final List<InetAddress> EXPECTED_PCSCF_ADDRESSES = + List.of(InetAddresses.parseNumericAddress("198.51.100.10")); + private static final List<InetAddress> EXPECTED_DNS_ADDRESSES = + List.of(InetAddresses.parseNumericAddress("198.50.100.10")); private EpdgTunnelManager mEpdgTunnelManager; @@ -354,7 +354,8 @@ public class EpdgTunnelManagerTest { any()); } - private void setupTunnelBringup(String apnName, int transactionId) throws Exception { + private void setupTunnelBringup( + String apnName, List<InetAddress> epdgAddresses, int transactionId) throws Exception { setupMockForGetConfig(null); doReturn(null) .when(mMockIkeSessionCreator) @@ -377,12 +378,12 @@ public class EpdgTunnelManagerTest { mTestLooper.dispatchAll(); mEpdgTunnelManager.sendSelectionRequestComplete( - EXPECTED_EPDG_ADDRESSES, new IwlanError(IwlanError.NO_ERROR), transactionId); + epdgAddresses, new IwlanError(IwlanError.NO_ERROR), transactionId); mTestLooper.dispatchAll(); } private void setupTunnelBringup() throws Exception { - setupTunnelBringup(TEST_APN_NAME, 1 /* transactionId */); + setupTunnelBringup(TEST_APN_NAME, EXPECTED_EPDG_ADDRESSES, 1 /* transactionId */); } @Test @@ -476,30 +477,25 @@ public class EpdgTunnelManagerTest { @Test public void testBringUpTunnelWithMobilityOptions() throws Exception { - doReturn(null) - .when(mMockIkeSessionCreator) + setupTunnelBringup(); + ArgumentCaptor<IkeSessionParams> ikeSessionParamsCaptor = + ArgumentCaptor.forClass(IkeSessionParams.class); + verify(mMockIkeSessionCreator, atLeastOnce()) .createIkeSession( eq(mMockContext), - any(IkeSessionParams.class), + ikeSessionParamsCaptor.capture(), any(ChildSessionParams.class), any(Executor.class), any(IkeSessionCallback.class), any(ChildSessionCallback.class)); + IkeSessionParams ikeSessionParams = ikeSessionParamsCaptor.getValue(); + assertTrue(ikeSessionParams.hasIkeOption(IkeSessionParams.IKE_OPTION_MOBIKE)); + assertTrue(ikeSessionParams.hasIkeOption(IkeSessionParams.IKE_OPTION_REKEY_MOBILITY)); + } - doReturn(true).when(mEpdgTunnelManager).canBringUpTunnel(eq(TEST_APN_NAME)); - - boolean ret = - mEpdgTunnelManager.bringUpTunnel( - getBasicTunnelSetupRequest(TEST_APN_NAME, ApnSetting.PROTOCOL_IP), - mMockIwlanTunnelCallback, - mMockIwlanTunnelMetrics); - assertTrue(ret); - mTestLooper.dispatchAll(); - - mEpdgTunnelManager.sendSelectionRequestComplete( - EXPECTED_EPDG_ADDRESSES, new IwlanError(IwlanError.NO_ERROR), 1); - mTestLooper.dispatchAll(); - + @Test + public void testBringUpTunnelIpv6_verifyMobikeDisabled() throws Exception { + setupTunnelBringup(TEST_APN_NAME, EXPECTED_EPDG_ADDRESSES_IPV6, 1); ArgumentCaptor<IkeSessionParams> ikeSessionParamsCaptor = ArgumentCaptor.forClass(IkeSessionParams.class); verify(mMockIkeSessionCreator, atLeastOnce()) @@ -511,8 +507,8 @@ public class EpdgTunnelManagerTest { any(IkeSessionCallback.class), any(ChildSessionCallback.class)); IkeSessionParams ikeSessionParams = ikeSessionParamsCaptor.getValue(); - assertTrue(ikeSessionParams.hasIkeOption(IkeSessionParams.IKE_OPTION_MOBIKE)); assertTrue(ikeSessionParams.hasIkeOption(IkeSessionParams.IKE_OPTION_REKEY_MOBILITY)); + assertFalse(ikeSessionParams.hasIkeOption(IkeSessionParams.IKE_OPTION_MOBIKE)); } @Test @@ -2045,7 +2041,7 @@ public class EpdgTunnelManagerTest { int transactionId = 0; // testApnName with token 0 - setupTunnelBringup(TEST_APN_NAME, ++transactionId); + setupTunnelBringup(TEST_APN_NAME, EXPECTED_EPDG_ADDRESSES, ++transactionId); mEpdgTunnelManager.onConnectedToEpdg(true); IwlanError error = new IwlanError(mMockIkeException); @@ -2059,7 +2055,7 @@ public class EpdgTunnelManagerTest { assertNull(mEpdgTunnelManager.getTunnelConfigForApn(TEST_APN_NAME)); // testApnName1 with token 1 - setupTunnelBringup(TEST_APN_NAME, ++transactionId); + setupTunnelBringup(TEST_APN_NAME, EXPECTED_EPDG_ADDRESSES, ++transactionId); mEpdgTunnelManager.onConnectedToEpdg(true); // signal from obsolete callback (token 0), ignore it @@ -2283,7 +2279,7 @@ public class EpdgTunnelManagerTest { IwlanError error = new IwlanError(IwlanError.IKE_INIT_TIMEOUT, mMockIkeIoException); doReturn(0L).when(mEpdgTunnelManager).reportIwlanError(eq(testApnName), eq(error)); - setupTunnelBringup(testApnName, 1); + setupTunnelBringup(); ArgumentCaptor<EpdgTunnelManager.TmIkeSessionCallback> ikeSessionCallbackCaptor = ArgumentCaptor.forClass(EpdgTunnelManager.TmIkeSessionCallback.class); |