From e45863205954b078870bfd7611b10a7e3e8aff09 Mon Sep 17 00:00:00 2001 From: Sreeram Ramachandran Date: Sun, 27 Jul 2014 14:18:26 -0700 Subject: [PATCH] Allow VPNs to add/remove link addresses dynamically. Bug: 15409819 Change-Id: If91fc6891d7ce04060362c6cde8c57462394c4e8 --- .../java/android/net/IConnectivityManager.aidl | 3 +++ .../android/server/ConnectivityService.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index 671df24b34..0814e0fc4b 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -163,4 +163,7 @@ interface IConnectivityManager void releaseNetworkRequest(in NetworkRequest networkRequest); int getRestoreDefaultNetworkDelay(int networkType); + + boolean addVpnAddress(String address, int prefixLength); + boolean removeVpnAddress(String address, int prefixLength); } diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 55070bbb64..428d857f1f 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -5351,4 +5351,22 @@ public class ConnectivityService extends IConnectivityManager.Stub { } return new NetworkCapabilities(); } + + @Override + public boolean addVpnAddress(String address, int prefixLength) { + throwIfLockdownEnabled(); + int user = UserHandle.getUserId(Binder.getCallingUid()); + synchronized (mVpns) { + return mVpns.get(user).addAddress(address, prefixLength); + } + } + + @Override + public boolean removeVpnAddress(String address, int prefixLength) { + throwIfLockdownEnabled(); + int user = UserHandle.getUserId(Binder.getCallingUid()); + synchronized (mVpns) { + return mVpns.get(user).removeAddress(address, prefixLength); + } + } }