From 75cacd552510b9e26d4dd5f81b5f41e98c9b240f Mon Sep 17 00:00:00 2001 From: Chia-chi Yeh Date: Wed, 15 Jun 2011 17:07:27 -0700 Subject: [PATCH] VPN: migrate from generic Bundle to our own Parcelable VpnConfig. Note that VpnConfig is for internal use only. Also remove hidden methods from ConnectivityManager. Change-Id: Ic298c4dc9a2c6c452bd8f4be6fa84e7ac489c0c4 --- .../java/android/net/ConnectivityManager.java | 40 ------------------- .../android/net/IConnectivityManager.aidl | 5 ++- .../android/server/ConnectivityService.java | 29 ++++++++++---- 3 files changed, 24 insertions(+), 50 deletions(-) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 30254625a2..2242e9e8e1 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -19,7 +19,6 @@ package android.net; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.os.Binder; -import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.os.RemoteException; @@ -758,43 +757,4 @@ public class ConnectivityManager { } catch (RemoteException e) { } } - - /** - * Protect a socket from routing changes. This method is limited to VPN - * applications, and it is always hidden to avoid direct use. - * @hide - */ - public void protectVpn(ParcelFileDescriptor socket) { - try { - mService.protectVpn(socket); - } catch (RemoteException e) { - } - } - - /** - * Prepare for a VPN application. This method is limited to VpnDialogs, - * and it is always hidden to avoid direct use. - * @hide - */ - public String prepareVpn(String packageName) { - try { - return mService.prepareVpn(packageName); - } catch (RemoteException e) { - return null; - } - } - - /** - * Configure a TUN interface and return its file descriptor. Parameters - * are encoded and opaque to this class. This method is limited to VPN - * applications, and it is always hidden to avoid direct use. - * @hide - */ - public ParcelFileDescriptor establishVpn(Bundle config) { - try { - return mService.establishVpn(config); - } catch (RemoteException e) { - return null; - } - } } diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index 7f3775dd71..fba16e12df 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -20,10 +20,11 @@ import android.net.LinkProperties; import android.net.NetworkInfo; import android.net.NetworkState; import android.net.ProxyProperties; -import android.os.Bundle; import android.os.IBinder; import android.os.ParcelFileDescriptor; +import com.android.internal.net.VpnConfig; + /** * Interface that answers queries about, and allows changing, the * state of network connectivity. @@ -102,5 +103,5 @@ interface IConnectivityManager String prepareVpn(String packageName); - ParcelFileDescriptor establishVpn(in Bundle config); + ParcelFileDescriptor establishVpn(in VpnConfig config); } diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index c6f4c205b0..385448f4b3 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -48,7 +48,6 @@ import android.net.RouteInfo; import android.net.vpn.VpnManager; import android.net.wifi.WifiStateTracker; import android.os.Binder; -import android.os.Bundle; import android.os.FileUtils; import android.os.Handler; import android.os.HandlerThread; @@ -67,6 +66,7 @@ import android.util.EventLog; import android.util.Slog; import android.util.SparseIntArray; +import com.android.internal.net.VpnConfig; import com.android.internal.telephony.Phone; import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Vpn; @@ -2396,24 +2396,37 @@ public class ConnectivityService extends IConnectivityManager.Stub { return value; } - // @see ConnectivityManager#protectVpn(ParcelFileDescriptor) - // Permission checks are done in Vpn class. + /** + * Protect a socket from VPN routing rules. This method is used by + * VpnBuilder and not available in ConnectivityManager. Permission + * checks are done in Vpn class. + * @hide + */ @Override public void protectVpn(ParcelFileDescriptor socket) { mVpn.protect(socket, getDefaultInterface()); } - // @see ConnectivityManager#prepareVpn(String) - // Permission checks are done in Vpn class. + /** + * Prepare for a VPN application. This method is used by VpnDialogs + * and not available in ConnectivityManager. Permission checks are + * done in Vpn class. + * @hide + */ @Override public String prepareVpn(String packageName) { return mVpn.prepare(packageName); } - // @see ConnectivityManager#establishVpn(Bundle) - // Permission checks are done in Vpn class. + /** + * Configure a TUN interface and return its file descriptor. Parameters + * are encoded and opaque to this class. This method is used by VpnBuilder + * and not available in ConnectivityManager. Permission checks are done + * in Vpn class. + * @hide + */ @Override - public ParcelFileDescriptor establishVpn(Bundle config) { + public ParcelFileDescriptor establishVpn(VpnConfig config) { return mVpn.establish(config); }