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/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);
}