Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0fb5a4d8 authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android (Google) Code Review
Browse files

Merge "Don't redirect dns to an iface without dns servers" into klp-dev

parents ae7b22d6 69887e83
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -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) {
            }

+14 −4
Original line number Diff line number Diff line
@@ -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;