Loading core/java/android/net/IConnectivityManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.ParcelFileDescriptor; import com.android.internal.net.LegacyVpnInfo; import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnProfile; /** * Interface that answers queries about, and allows changing, the Loading Loading @@ -118,7 +119,7 @@ interface IConnectivityManager ParcelFileDescriptor establishVpn(in VpnConfig config); void startLegacyVpn(in VpnConfig config, in String[] racoon, in String[] mtpd); void startLegacyVpn(in VpnProfile profile); LegacyVpnInfo getLegacyVpnInfo(); } core/java/com/android/internal/net/VpnProfile.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.net; parcelable VpnProfile; core/java/com/android/internal/net/VpnProfile.java +28 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.internal.net; import android.os.Parcel; import android.os.Parcelable; import java.nio.charset.Charsets; /** Loading @@ -27,7 +30,7 @@ import java.nio.charset.Charsets; * * @hide */ public class VpnProfile implements Cloneable { public class VpnProfile implements Cloneable, Parcelable { // Match these constants with R.array.vpn_types. public static final int TYPE_PPTP = 0; public static final int TYPE_L2TP_IPSEC_PSK = 1; Loading Loading @@ -120,4 +123,28 @@ public class VpnProfile implements Cloneable { builder.append('\0').append(ipsecServerCert); return builder.toString().getBytes(Charsets.UTF_8); } @Override public void writeToParcel(Parcel out, int flags) { out.writeString(key); out.writeByteArray(encode()); } public static final Creator<VpnProfile> CREATOR = new Creator<VpnProfile>() { @Override public VpnProfile createFromParcel(Parcel in) { final String key = in.readString(); return decode(key, in.createByteArray()); } @Override public VpnProfile[] newArray(int size) { return new VpnProfile[size]; } }; @Override public int describeContents() { return 0; } } packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java +5 −1 Original line number Diff line number Diff line Loading @@ -123,8 +123,12 @@ public class ManageDialog extends AlertActivity implements if (which == DialogInterface.BUTTON_POSITIVE) { mConfig.configureIntent.send(); } else if (which == DialogInterface.BUTTON_NEUTRAL) { if (mConfig.legacy) { mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN); } else { mService.prepareVpn(mConfig.user, VpnConfig.LEGACY_VPN); } } } catch (Exception e) { Log.e(TAG, "onClick", e); finish(); Loading services/java/com/android/server/ConnectivityService.java +16 −6 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import static android.net.ConnectivityManager.isNetworkTypeValid; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_METERED; import android.app.NotificationManager; import android.app.PendingIntent; import android.bluetooth.BluetoothTetheringDataTracker; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -78,6 +80,7 @@ import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; import android.security.KeyStore; import android.text.TextUtils; import android.util.EventLog; import android.util.Slog; Loading @@ -85,8 +88,10 @@ import android.util.SparseIntArray; import com.android.internal.net.LegacyVpnInfo; import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnProfile; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.util.Preconditions; import com.android.server.am.BatteryStatsService; import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Vpn; Loading Loading @@ -137,6 +142,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { private Tethering mTethering; private boolean mTetheringConfigValid = false; private final KeyStore mKeyStore; private Vpn mVpn; private VpnCallback mVpnCallback = new VpnCallback(); Loading Loading @@ -371,6 +378,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { mContext = checkNotNull(context, "missing Context"); mNetd = checkNotNull(netManager, "missing INetworkManagementService"); mPolicyManager = checkNotNull(policyManager, "missing INetworkPolicyManager"); mKeyStore = KeyStore.getInstance(); try { mPolicyManager.registerListener(mPolicyListener); Loading Loading @@ -3124,14 +3132,16 @@ public class ConnectivityService extends IConnectivityManager.Stub { } /** * Start legacy VPN and return an intent to VpnDialogs. This method is * used by VpnSettings and not available in ConnectivityManager. * Permissions are checked in Vpn class. * @hide * Start legacy VPN, controlling native daemons as needed. Creates a * secondary thread to perform connection work, returning quickly. */ @Override public void startLegacyVpn(VpnConfig config, String[] racoon, String[] mtpd) { mVpn.startLegacyVpn(config, racoon, mtpd); public void startLegacyVpn(VpnProfile profile) { final LinkProperties egress = getActiveLinkProperties(); if (egress == null) { throw new IllegalStateException("Missing active network connection"); } mVpn.startLegacyVpn(profile, mKeyStore, egress); } /** Loading Loading
core/java/android/net/IConnectivityManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.ParcelFileDescriptor; import com.android.internal.net.LegacyVpnInfo; import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnProfile; /** * Interface that answers queries about, and allows changing, the Loading Loading @@ -118,7 +119,7 @@ interface IConnectivityManager ParcelFileDescriptor establishVpn(in VpnConfig config); void startLegacyVpn(in VpnConfig config, in String[] racoon, in String[] mtpd); void startLegacyVpn(in VpnProfile profile); LegacyVpnInfo getLegacyVpnInfo(); }
core/java/com/android/internal/net/VpnProfile.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.net; parcelable VpnProfile;
core/java/com/android/internal/net/VpnProfile.java +28 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.internal.net; import android.os.Parcel; import android.os.Parcelable; import java.nio.charset.Charsets; /** Loading @@ -27,7 +30,7 @@ import java.nio.charset.Charsets; * * @hide */ public class VpnProfile implements Cloneable { public class VpnProfile implements Cloneable, Parcelable { // Match these constants with R.array.vpn_types. public static final int TYPE_PPTP = 0; public static final int TYPE_L2TP_IPSEC_PSK = 1; Loading Loading @@ -120,4 +123,28 @@ public class VpnProfile implements Cloneable { builder.append('\0').append(ipsecServerCert); return builder.toString().getBytes(Charsets.UTF_8); } @Override public void writeToParcel(Parcel out, int flags) { out.writeString(key); out.writeByteArray(encode()); } public static final Creator<VpnProfile> CREATOR = new Creator<VpnProfile>() { @Override public VpnProfile createFromParcel(Parcel in) { final String key = in.readString(); return decode(key, in.createByteArray()); } @Override public VpnProfile[] newArray(int size) { return new VpnProfile[size]; } }; @Override public int describeContents() { return 0; } }
packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java +5 −1 Original line number Diff line number Diff line Loading @@ -123,8 +123,12 @@ public class ManageDialog extends AlertActivity implements if (which == DialogInterface.BUTTON_POSITIVE) { mConfig.configureIntent.send(); } else if (which == DialogInterface.BUTTON_NEUTRAL) { if (mConfig.legacy) { mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN); } else { mService.prepareVpn(mConfig.user, VpnConfig.LEGACY_VPN); } } } catch (Exception e) { Log.e(TAG, "onClick", e); finish(); Loading
services/java/com/android/server/ConnectivityService.java +16 −6 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import static android.net.ConnectivityManager.isNetworkTypeValid; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_METERED; import android.app.NotificationManager; import android.app.PendingIntent; import android.bluetooth.BluetoothTetheringDataTracker; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -78,6 +80,7 @@ import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; import android.security.KeyStore; import android.text.TextUtils; import android.util.EventLog; import android.util.Slog; Loading @@ -85,8 +88,10 @@ import android.util.SparseIntArray; import com.android.internal.net.LegacyVpnInfo; import com.android.internal.net.VpnConfig; import com.android.internal.net.VpnProfile; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.util.Preconditions; import com.android.server.am.BatteryStatsService; import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Vpn; Loading Loading @@ -137,6 +142,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { private Tethering mTethering; private boolean mTetheringConfigValid = false; private final KeyStore mKeyStore; private Vpn mVpn; private VpnCallback mVpnCallback = new VpnCallback(); Loading Loading @@ -371,6 +378,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { mContext = checkNotNull(context, "missing Context"); mNetd = checkNotNull(netManager, "missing INetworkManagementService"); mPolicyManager = checkNotNull(policyManager, "missing INetworkPolicyManager"); mKeyStore = KeyStore.getInstance(); try { mPolicyManager.registerListener(mPolicyListener); Loading Loading @@ -3124,14 +3132,16 @@ public class ConnectivityService extends IConnectivityManager.Stub { } /** * Start legacy VPN and return an intent to VpnDialogs. This method is * used by VpnSettings and not available in ConnectivityManager. * Permissions are checked in Vpn class. * @hide * Start legacy VPN, controlling native daemons as needed. Creates a * secondary thread to perform connection work, returning quickly. */ @Override public void startLegacyVpn(VpnConfig config, String[] racoon, String[] mtpd) { mVpn.startLegacyVpn(config, racoon, mtpd); public void startLegacyVpn(VpnProfile profile) { final LinkProperties egress = getActiveLinkProperties(); if (egress == null) { throw new IllegalStateException("Missing active network connection"); } mVpn.startLegacyVpn(profile, mKeyStore, egress); } /** Loading