diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2013-10-04 13:34:05 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-04 13:34:05 -0700 |
commit | aabe1bf306c18873f9a2e70150e95ce1baacb609 (patch) | |
tree | ed7f21a2f46ba3330797c01f6252c630206e52a1 /services | |
parent | dfbe5bdba878d6ff0e02964830bbad699e7aa34a (diff) | |
parent | 32c9cd84034512f54fe05c66fd73279c8f1ca596 (diff) | |
download | frameworks_base-aabe1bf306c18873f9a2e70150e95ce1baacb609.zip frameworks_base-aabe1bf306c18873f9a2e70150e95ce1baacb609.tar.gz frameworks_base-aabe1bf306c18873f9a2e70150e95ce1baacb609.tar.bz2 |
am 32c9cd84: am 0fb5a4d8: Merge "Don\'t redirect dns to an iface without dns servers" into klp-dev
* commit '32c9cd84034512f54fe05c66fd73279c8f1ca596':
Don't redirect dns to an iface without dns servers
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; |