diff options
| author | Yan Yan <evitayan@google.com> | 2021-02-24 21:03:05 -0800 |
|---|---|---|
| committer | Yan Yan <evitayan@google.com> | 2021-03-04 14:15:57 -0800 |
| commit | 3d9908aa999d3a34643bdee27474302a8969e2fa (patch) | |
| tree | 644a09e64531397ea301b67509fab5a58a44c45f /core/java | |
| parent | 85414c1c248df5588eb756df1164336b44da54d3 (diff) | |
Support converting IKE Options to/from PersistableBundle
Bug: 163604823
Test: FrameworksVcnTests(add new tests)
Change-Id: I28cad3cf4d8ccccb8233f76c631db3a302eb320b
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java index f54cc03bd695..9d3462cb0b2e 100644 --- a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java +++ b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java @@ -36,6 +36,7 @@ import android.net.ipsec.ike.IkeSessionParams.IkeAuthEapConfig; import android.net.ipsec.ike.IkeSessionParams.IkeAuthPskConfig; import android.net.ipsec.ike.IkeSessionParams.IkeConfigRequest; import android.os.PersistableBundle; +import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.server.vcn.util.PersistableBundleUtils; @@ -48,6 +49,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.Set; /** * Abstract utility class to convert IkeSessionParams to/from PersistableBundle. @@ -68,6 +70,15 @@ public final class IkeSessionParamsUtils { private static final String SOFT_LIFETIME_SEC_KEY = "SOFT_LIFETIME_SEC_KEY"; private static final String DPD_DELAY_SEC_KEY = "DPD_DELAY_SEC_KEY"; private static final String NATT_KEEPALIVE_DELAY_SEC_KEY = "NATT_KEEPALIVE_DELAY_SEC_KEY"; + private static final String IKE_OPTIONS_KEY = "IKE_OPTIONS_KEY"; + + private static final Set<Integer> IKE_OPTIONS = new ArraySet<>(); + + static { + IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_ACCEPT_ANY_REMOTE_ID); + IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_EAP_ONLY_AUTH); + IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_MOBIKE); + } /** Serializes an IkeSessionParams to a PersistableBundle. */ @NonNull @@ -113,7 +124,15 @@ public final class IkeSessionParamsUtils { result.putInt(DPD_DELAY_SEC_KEY, params.getDpdDelaySeconds()); result.putInt(NATT_KEEPALIVE_DELAY_SEC_KEY, params.getNattKeepAliveDelaySeconds()); - // TODO: Handle IKE options. + final List<Integer> enabledIkeOptions = new ArrayList<>(); + for (int option : IKE_OPTIONS) { + if (params.hasIkeOption(option)) { + enabledIkeOptions.add(option); + } + } + + final int[] optionArray = enabledIkeOptions.stream().mapToInt(i -> i).toArray(); + result.putIntArray(IKE_OPTIONS_KEY, optionArray); return result; } @@ -180,7 +199,15 @@ public final class IkeSessionParamsUtils { } } - // TODO: Handle IKE options. + // Clear IKE Options that are by default enabled + for (int option : IKE_OPTIONS) { + builder.removeIkeOption(option); + } + + final int[] optionArray = in.getIntArray(IKE_OPTIONS_KEY); + for (int option : optionArray) { + builder.addIkeOption(option); + } return builder.build(); } |
