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

Commit 7df80fa4 authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

Use the carrier-given dns addrs for tethering.

This fixes a complaint from carriers (that we used 8.8.8.8), but also
fixes the case where there is only room for one live radio
connection: the secondary connection (tethering) doesn't have a
default route to prevent on-device traffic from slipping out on the
tethering connection, but tethered dns is proxied through dnsmasq, so
it is appearing as on-device traffic and is unroutable.  By switching
to the carrier-indicated dns servers we can use the host-routes
already set for those and kill two bugs with one fix.

bug:5898904
Change-Id: Ida8777687994f353b2d4f2c7db5d6ea4b6ac3882
parent 5e5b57ae
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
        "192.168.48.2", "192.168.48.254",
    };

    private String[] mDnsServers;
    private String[] mDefaultDnsServers;
    private static final String DNS_DEFAULT_SERVER1 = "8.8.8.8";
    private static final String DNS_DEFAULT_SERVER2 = "8.8.4.4";

@@ -171,9 +171,9 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
        updateConfiguration();

        // TODO - remove and rely on real notifications of the current iface
        mDnsServers = new String[2];
        mDnsServers[0] = DNS_DEFAULT_SERVER1;
        mDnsServers[1] = DNS_DEFAULT_SERVER2;
        mDefaultDnsServers = new String[2];
        mDefaultDnsServers[0] = DNS_DEFAULT_SERVER1;
        mDefaultDnsServers[1] = DNS_DEFAULT_SERVER2;
    }

    void updateConfiguration() {
@@ -1245,7 +1245,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
                    }
                }
                try {
                    mNMService.setDnsForwarders(mDnsServers);
                    mNMService.setDnsForwarders(mDefaultDnsServers);
                } catch (Exception e) {
                    transitionTo(mSetDnsForwardersErrorState);
                    return false;
@@ -1321,7 +1321,19 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
                    try {
                        linkProperties = mConnService.getLinkProperties(upType);
                    } catch (RemoteException e) { }
                    if (linkProperties != null) iface = linkProperties.getInterfaceName();
                    if (linkProperties != null) {
                        iface = linkProperties.getInterfaceName();
                        String[] dnsServers = mDefaultDnsServers;
                        Collection<InetAddress> dnses = linkProperties.getDnses();
                        if (dnses != null) {
                            dnsServers = NetworkUtils.makeStrings(dnses);
                        }
                        try {
                            mNMService.setDnsForwarders(dnsServers);
                        } catch (Exception e) {
                            transitionTo(mSetDnsForwardersErrorState);
                        }
                    }
                }
                notifyTetheredOfNewUpstreamIface(iface);
            }