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
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index 3025462..2242e9e 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -19,7 +19,6 @@
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 @@
} 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 7f3775d..fba16e1 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -20,10 +20,11 @@
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 @@
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 c6f4c20..385448f 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -48,7 +48,6 @@
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.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 @@
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);
}