summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2013-09-24 11:05:57 -0700
committerRobert Greenwalt <rgreenwalt@google.com>2013-09-25 16:58:45 -0700
commit69887e838814642a7ae78fc810656c7c8afc2a19 (patch)
treed883784e7b9096bff984ce8e42403e7e1679aae1 /services
parent66a9b2d7392a7f6334b5fe23d00ba718f3fa1851 (diff)
downloadframeworks_base-69887e838814642a7ae78fc810656c7c8afc2a19.zip
frameworks_base-69887e838814642a7ae78fc810656c7c8afc2a19.tar.gz
frameworks_base-69887e838814642a7ae78fc810656c7c8afc2a19.tar.bz2
Don't redirect dns to an iface without dns servers
bug:10115444 Change-Id: Ide42072bb3aae21f8e99c11c2de263e9a765b911
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/ConnectivityService.java20
-rw-r--r--services/java/com/android/server/connectivity/Vpn.java18
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 3f13f3a..56d5010 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 8cc5b4f..7c456ae 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;