Remove default routes for non-default networks.

Recoding/port of a change that existed in GB but got dropped
in the shuffle.

bug:5036222
Change-Id: I87e819d255c0c46f3ec8fe0fe18d27ae9df1ae36
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 3ae7a3f..acfc7a4 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1831,6 +1831,19 @@
         for (RouteInfo r :  routeDiff.added) {
             if (isLinkDefault || ! r.isDefaultRoute()) {
                 addRoute(newLp, r);
+            } else {
+                // many radios add a default route even when we don't want one.
+                // remove the default route unless somebody else has asked for it
+                String ifaceName = newLp.getInterfaceName();
+                if (TextUtils.isEmpty(ifaceName) == false && mAddedRoutes.contains(r) == false) {
+                    if (DBG) log("Removing " + r + " for interface " + ifaceName);
+                    try {
+                        mNetd.removeRoute(ifaceName, r);
+                    } catch (Exception e) {
+                        // never crash - catch them all
+                        loge("Exception trying to remove a route: " + e);
+                    }
+                }
             }
         }