Use the proper IpPrefix and LinkAddress constructors in VPN code.

This simplifies the code, and also makes it possible for
users to point multicast routes at the VPN. The LinkAddress
objects we were previously using to construct the RouteInfo do
not accept these, but IpPrefix objects do.

Bug: 18485968
Change-Id: Ie914a2eb359b78161810ee473df725059f944f4e
diff --git a/core/java/android/net/VpnService.java b/core/java/android/net/VpnService.java
index f6b6978..c26af06 100644
--- a/core/java/android/net/VpnService.java
+++ b/core/java/android/net/VpnService.java
@@ -501,7 +501,7 @@
                     }
                 }
             }
-            mRoutes.add(new RouteInfo(new LinkAddress(address, prefixLength), null));
+            mRoutes.add(new RouteInfo(new IpPrefix(address, prefixLength), null));
             mConfig.updateAllowedFamilies(address);
             return this;
         }
diff --git a/core/java/com/android/internal/net/VpnConfig.java b/core/java/com/android/internal/net/VpnConfig.java
index c5d9db4..921f1fe 100644
--- a/core/java/com/android/internal/net/VpnConfig.java
+++ b/core/java/com/android/internal/net/VpnConfig.java
@@ -24,6 +24,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
+import android.net.IpPrefix;
 import android.net.LinkAddress;
 import android.net.Network;
 import android.net.RouteInfo;
@@ -117,9 +118,7 @@
         String[] routes = routesStr.trim().split(" ");
         for (String route : routes) {
             //each route is ip/prefix
-            String[] split = route.split("/");
-            RouteInfo info = new RouteInfo(new LinkAddress
-                    (InetAddress.parseNumericAddress(split[0]), Integer.parseInt(split[1])), null);
+            RouteInfo info = new RouteInfo(new IpPrefix(route), null);
             this.routes.add(info);
             updateAllowedFamilies(info.getDestination().getAddress());
         }
@@ -132,9 +131,7 @@
         String[] addresses = addressesStr.trim().split(" ");
         for (String address : addresses) {
             //each address is ip/prefix
-            String[] split = address.split("/");
-            LinkAddress addr = new LinkAddress(InetAddress.parseNumericAddress(split[0]),
-                    Integer.parseInt(split[1]));
+            LinkAddress addr = new LinkAddress(address);
             this.addresses.add(addr);
             updateAllowedFamilies(addr.getAddress());
         }