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

Commit e83d1816 authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

Fix some policy-base routing issues.

Secondary nets sometimes come up with no routes, but parsing errors end up with null
routes getting added.  Trim that away.  Also added some dumpstate logging of the secondary
route tables and rules.

bug:5615697
Change-Id: I94c9d888bab958df44891b9117236436e046cc7f
parent 4c6a65bc
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -120,6 +120,12 @@ static void dumpstate() {

    dump_file("NETWORK ROUTES", "/proc/net/route");
    dump_file("NETWORK ROUTES IPV6", "/proc/net/ipv6_route");
    run_command("IP RULES", 10, "ip", "rule", "show", NULL);
    run_command("IP RULES v6", 10, "ip", "-6", "rule", "show", NULL);
    run_command("ROUTE TABLE 60", 10, "ip", "route", "show", "table", "60", NULL);
    run_command("ROUTE TABLE 61 v6", 10, "ip", "-6", "route", "show", "table", "60", NULL);
    run_command("ROUTE TABLE 61", 10, "ip", "route", "show", "table", "61", NULL);
    run_command("ROUTE TABLE 61 v6", 10, "ip", "-6", "route", "show", "table", "61", NULL);
    dump_file("ARP CACHE", "/proc/net/arp");
    run_command("IPTABLES", 10, "su", "root", "iptables", "-L", "-nvx", NULL);
    run_command("IP6TABLES", 10, "su", "root", "ip6tables", "-L", "-nvx", NULL);
+11 −7
Original line number Diff line number Diff line
@@ -856,6 +856,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub

        NetworkInterface internalNetworkInterface =
                NetworkInterface.getByName(internalInterface);
        if (internalNetworkInterface == null) {
            cmd += " 0";
        } else {
            Collection<InterfaceAddress>interfaceAddresses =
                    internalNetworkInterface.getInterfaceAddresses();
            cmd += " " + interfaceAddresses.size();
@@ -864,6 +867,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub
                        ia.getNetworkPrefixLength());
                cmd = cmd + " " + addr.getHostAddress() + "/" + ia.getNetworkPrefixLength();
            }
        }

        mConnector.doCommand(cmd);
    }
+8 −0
Original line number Diff line number Diff line
@@ -126,6 +126,8 @@ public class DataCallState {
                // set link addresses
                if (addresses != null && addresses.length > 0) {
                    for (String addr : addresses) {
                        addr = addr.trim();
                        if (addr.isEmpty()) continue;
                        LinkAddress la;
                        int addrPrefixLen;

@@ -159,6 +161,8 @@ public class DataCallState {
                // set dns servers
                if (dnses != null && dnses.length > 0) {
                    for (String addr : dnses) {
                        addr = addr.trim();
                        if (addr.isEmpty()) continue;
                        InetAddress ia;
                        try {
                            ia = NetworkUtils.numericToInetAddress(addr);
@@ -174,6 +178,8 @@ public class DataCallState {
                    dnsServers[0] = SystemProperties.get(propertyPrefix + "dns1");
                    dnsServers[1] = SystemProperties.get(propertyPrefix + "dns2");
                    for (String dnsAddr : dnsServers) {
                        dnsAddr = dnsAddr.trim();
                        if (dnsAddr.isEmpty()) continue;
                        InetAddress ia;
                        try {
                            ia = NetworkUtils.numericToInetAddress(dnsAddr);
@@ -198,6 +204,8 @@ public class DataCallState {
                    }
                }
                for (String addr : gateways) {
                    addr = addr.trim();
                    if (addr.isEmpty()) continue;
                    InetAddress ia;
                    try {
                        ia = NetworkUtils.numericToInetAddress(addr);