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
This commit is contained in:
Chia-chi Yeh
2011-06-15 17:07:27 -07:00
parent 97abbe95cd
commit 75cacd5525
3 changed files with 24 additions and 50 deletions

View File

@@ -19,7 +19,6 @@ package android.net;
import android.annotation.SdkConstant; import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SdkConstant.SdkConstantType;
import android.os.Binder; import android.os.Binder;
import android.os.Bundle;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.os.RemoteException; import android.os.RemoteException;
@@ -758,43 +757,4 @@ public class ConnectivityManager {
} catch (RemoteException e) { } 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;
}
}
} }

View File

@@ -20,10 +20,11 @@ import android.net.LinkProperties;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkState; import android.net.NetworkState;
import android.net.ProxyProperties; import android.net.ProxyProperties;
import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import com.android.internal.net.VpnConfig;
/** /**
* Interface that answers queries about, and allows changing, the * Interface that answers queries about, and allows changing, the
* state of network connectivity. * state of network connectivity.
@@ -102,5 +103,5 @@ interface IConnectivityManager
String prepareVpn(String packageName); String prepareVpn(String packageName);
ParcelFileDescriptor establishVpn(in Bundle config); ParcelFileDescriptor establishVpn(in VpnConfig config);
} }

View File

@@ -48,7 +48,6 @@ import android.net.RouteInfo;
import android.net.vpn.VpnManager; import android.net.vpn.VpnManager;
import android.net.wifi.WifiStateTracker; import android.net.wifi.WifiStateTracker;
import android.os.Binder; import android.os.Binder;
import android.os.Bundle;
import android.os.FileUtils; import android.os.FileUtils;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
@@ -67,6 +66,7 @@ import android.util.EventLog;
import android.util.Slog; import android.util.Slog;
import android.util.SparseIntArray; import android.util.SparseIntArray;
import com.android.internal.net.VpnConfig;
import com.android.internal.telephony.Phone; import com.android.internal.telephony.Phone;
import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Tethering;
import com.android.server.connectivity.Vpn; import com.android.server.connectivity.Vpn;
@@ -2396,24 +2396,37 @@ public class ConnectivityService extends IConnectivityManager.Stub {
return value; 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 @Override
public void protectVpn(ParcelFileDescriptor socket) { public void protectVpn(ParcelFileDescriptor socket) {
mVpn.protect(socket, getDefaultInterface()); 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 @Override
public String prepareVpn(String packageName) { public String prepareVpn(String packageName) {
return mVpn.prepare(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 @Override
public ParcelFileDescriptor establishVpn(Bundle config) { public ParcelFileDescriptor establishVpn(VpnConfig config) {
return mVpn.establish(config); return mVpn.establish(config);
} }