diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2013-10-04 18:06:13 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-10-04 18:06:13 +0000 |
commit | 0fb5a4d8ca5e0f6aaf3db9dddfcc3a61a106c545 (patch) | |
tree | 8057e9e004fdeb1fa704dda37018dead9abb1f98 /services | |
parent | ae7b22d61df0aef471c50d56a06a7d4316daffc6 (diff) | |
parent | 69887e838814642a7ae78fc810656c7c8afc2a19 (diff) | |
download | frameworks_base-0fb5a4d8ca5e0f6aaf3db9dddfcc3a61a106c545.zip frameworks_base-0fb5a4d8ca5e0f6aaf3db9dddfcc3a61a106c545.tar.gz frameworks_base-0fb5a4d8ca5e0f6aaf3db9dddfcc3a61a106c545.tar.bz2 |
Merge "Don't redirect dns to an iface without dns servers" into klp-dev
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 20 | ||||
-rw-r--r-- | services/java/com/android/server/connectivity/Vpn.java | 18 |
2 files changed, 25 insertions, 13 deletions
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index f005f5f..59b559e 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -2794,7 +2794,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { } mNumDnsEntries = last; } catch (Exception e) { - if (DBG) loge("exception setting default dns interface: " + e); + loge("exception setting default dns interface: " + e); } } @@ -3779,31 +3779,33 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } - public void addUserForwarding(String interfaze, int uid) { + public void addUserForwarding(String interfaze, int uid, boolean forwardDns) { int uidStart = uid * UserHandle.PER_USER_RANGE; int uidEnd = uidStart + UserHandle.PER_USER_RANGE - 1; - addUidForwarding(interfaze, uidStart, uidEnd); + addUidForwarding(interfaze, uidStart, uidEnd, forwardDns); } - public void clearUserForwarding(String interfaze, int uid) { + public void clearUserForwarding(String interfaze, int uid, boolean forwardDns) { int uidStart = uid * UserHandle.PER_USER_RANGE; int uidEnd = uidStart + UserHandle.PER_USER_RANGE - 1; - clearUidForwarding(interfaze, uidStart, uidEnd); + clearUidForwarding(interfaze, uidStart, uidEnd, forwardDns); } - public void addUidForwarding(String interfaze, int uidStart, int uidEnd) { + public void addUidForwarding(String interfaze, int uidStart, int uidEnd, + boolean forwardDns) { try { mNetd.setUidRangeRoute(interfaze,uidStart, uidEnd); - mNetd.setDnsInterfaceForUidRange(interfaze, uidStart, uidEnd); + if (forwardDns) mNetd.setDnsInterfaceForUidRange(interfaze, uidStart, uidEnd); } catch (RemoteException e) { } } - public void clearUidForwarding(String interfaze, int uidStart, int uidEnd) { + public void clearUidForwarding(String interfaze, int uidStart, int uidEnd, + boolean forwardDns) { try { mNetd.clearUidRangeRoute(interfaze, uidStart, uidEnd); - mNetd.clearDnsInterfaceForUidRange(uidStart, uidEnd); + if (forwardDns) mNetd.clearDnsInterfaceForUidRange(uidStart, uidEnd); } catch (RemoteException e) { } diff --git a/services/java/com/android/server/connectivity/Vpn.java b/services/java/com/android/server/connectivity/Vpn.java index 45797b2..f5a7039 100644 --- a/services/java/com/android/server/connectivity/Vpn.java +++ b/services/java/com/android/server/connectivity/Vpn.java @@ -242,9 +242,11 @@ public class Vpn extends BaseNetworkStateTracker { try { mCallback.restore(); final int size = mVpnUsers.size(); + final boolean forwardDns = (mConfig.dnsServers != null && + mConfig.dnsServers.size() != 0); for (int i = 0; i < size; i++) { int user = mVpnUsers.keyAt(i); - mCallback.clearUserForwarding(mInterface, user); + mCallback.clearUserForwarding(mInterface, user, forwardDns); hideNotification(user); } @@ -443,8 +445,12 @@ public class Vpn extends BaseNetworkStateTracker { if (!isRunningLocked()) { throw new IllegalStateException("VPN is not active"); } + + final boolean forwardDns = (mConfig.dnsServers != null && + mConfig.dnsServers.size() != 0); + // add the user - mCallback.addUserForwarding(mInterface, user); + mCallback.addUserForwarding(mInterface, user, forwardDns); mVpnUsers.put(user, true); // show the notification @@ -484,7 +490,9 @@ public class Vpn extends BaseNetworkStateTracker { if (!isRunningLocked()) { throw new IllegalStateException("VPN is not active"); } - mCallback.clearUserForwarding(mInterface, user); + final boolean forwardDns = (mConfig.dnsServers != null && + mConfig.dnsServers.size() != 0); + mCallback.clearUserForwarding(mInterface, user, forwardDns); mVpnUsers.delete(user); hideNotification(user); } @@ -553,9 +561,11 @@ public class Vpn extends BaseNetworkStateTracker { final long token = Binder.clearCallingIdentity(); try { final int size = mVpnUsers.size(); + final boolean forwardDns = (mConfig.dnsServers != null && + mConfig.dnsServers.size() != 0); for (int i = 0; i < size; i++) { int user = mVpnUsers.keyAt(i); - mCallback.clearUserForwarding(mInterface, user); + mCallback.clearUserForwarding(mInterface, user, forwardDns); hideNotification(user); } mVpnUsers = null; |