From 462e5705c871b134a686cdcb5bf52188e508b6c8 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Wed, 31 Oct 2012 14:32:53 -0700 Subject: [PATCH] Remove DhcpInfoInternal First step in accepting a set of patches. bug:6799630 Change-Id: I6c894c60aeb3022960c2aaa45451bb1dde2b493b --- core/java/android/net/DhcpInfo.java | 5 +- core/java/android/net/LinkProperties.java | 13 +-- core/java/android/net/NetworkUtils.java | 13 +-- core/java/android/net/RouteInfo.java | 4 + core/jni/android_net_NetUtils.cpp | 117 +++++++++++++--------- 5 files changed, 85 insertions(+), 67 deletions(-) diff --git a/core/java/android/net/DhcpInfo.java b/core/java/android/net/DhcpInfo.java index e2660e40f5..2b359ebc11 100644 --- a/core/java/android/net/DhcpInfo.java +++ b/core/java/android/net/DhcpInfo.java @@ -22,16 +22,17 @@ import java.net.InetAddress; /** * A simple object for retrieving the results of a DHCP request. + * @deprecated - use LinkProperties - To be removed 11/2013 + * STOPSHIP - make sure we expose LinkProperties through ConnectivityManager */ public class DhcpInfo implements Parcelable { public int ipAddress; public int gateway; public int netmask; - public int dns1; public int dns2; - public int serverAddress; + public int leaseDuration; public DhcpInfo() { diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index 75646fdf90..60bf640b38 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -51,7 +51,7 @@ import java.util.Collections; */ public class LinkProperties implements Parcelable { - String mIfaceName; + private String mIfaceName; private Collection mLinkAddresses = new ArrayList(); private Collection mDnses = new ArrayList(); private Collection mRoutes = new ArrayList(); @@ -181,7 +181,7 @@ public class LinkProperties implements Parcelable { } /** - * Compares this {@code LinkProperties} interface name against the target + * Compares this {@code LinkProperties} interface addresses against the target * * @param target LinkProperties to compare. * @return {@code true} if both are identical, {@code false} otherwise. @@ -365,7 +365,6 @@ public class LinkProperties implements Parcelable { /** * Implement the Parcelable interface. - * @hide */ public void writeToParcel(Parcel dest, int flags) { dest.writeString(getInterfaceName()); @@ -394,19 +393,15 @@ public class LinkProperties implements Parcelable { /** * Implement the Parcelable interface. - * @hide */ public static final Creator CREATOR = new Creator() { public LinkProperties createFromParcel(Parcel in) { LinkProperties netProp = new LinkProperties(); + String iface = in.readString(); if (iface != null) { - try { - netProp.setInterfaceName(iface); - } catch (Exception e) { - return null; - } + netProp.setInterfaceName(iface); } int addressCount = in.readInt(); for (int i=0; iReleaseStringUTFChars(ifname, nameStr); if (result == 0) { - env->SetObjectField(info, dhcpInfoInternalFieldIds.ipaddress, env->NewStringUTF(ipaddr)); + env->CallVoidMethod(dhcpResults, dhcpResultsFieldIds.clear); + // set mIfaceName + // dhcpResults->setInterfaceName(ifname) + env->CallVoidMethod(dhcpResults, dhcpResultsFieldIds.setInterfaceName, ifname); + + // set the linkAddress + // dhcpResults->addLinkAddress(inetAddress, prefixLength) + result = env->CallBooleanMethod(dhcpResults, dhcpResultsFieldIds.addLinkAddress, + env->NewStringUTF(ipaddr), prefixLength); + } + + if (result == 0) { // set the gateway - jclass cls = env->FindClass("java/net/InetAddress"); - jmethodID method = env->GetStaticMethodID(cls, "getByName", - "(Ljava/lang/String;)Ljava/net/InetAddress;"); - jvalue args[1]; - args[0].l = env->NewStringUTF(gateway); - jobject inetAddressObject = env->CallStaticObjectMethodA(cls, method, args); + // dhcpResults->addGateway(gateway) + result = env->CallBooleanMethod(dhcpResults, + dhcpResultsFieldIds.addGateway, env->NewStringUTF(gateway)); + } - if (!env->ExceptionOccurred()) { - cls = env->FindClass("android/net/RouteInfo"); - method = env->GetMethodID(cls, "", "(Ljava/net/InetAddress;)V"); - args[0].l = inetAddressObject; - jobject routeInfoObject = env->NewObjectA(cls, method, args); + if (result == 0) { + // dhcpResults->addDns(new InetAddress(dns1)) + result = env->CallBooleanMethod(dhcpResults, + dhcpResultsFieldIds.addDns, env->NewStringUTF(dns1)); + } - cls = env->FindClass("android/net/DhcpInfoInternal"); - method = env->GetMethodID(cls, "addRoute", "(Landroid/net/RouteInfo;)V"); - args[0].l = routeInfoObject; - env->CallVoidMethodA(info, method, args); - } else { - // if we have an exception (host not found perhaps), just don't add the route - env->ExceptionClear(); - } + if (result == 0) { + result = env->CallBooleanMethod(dhcpResults, + dhcpResultsFieldIds.addDns, env->NewStringUTF(dns2)); + } - env->SetIntField(info, dhcpInfoInternalFieldIds.prefixLength, prefixLength); - env->SetObjectField(info, dhcpInfoInternalFieldIds.dns1, env->NewStringUTF(dns1)); - env->SetObjectField(info, dhcpInfoInternalFieldIds.dns2, env->NewStringUTF(dns2)); - env->SetObjectField(info, dhcpInfoInternalFieldIds.serverAddress, + if (result == 0) { + // dhcpResults->setServerAddress(new InetAddress(server)) + result = env->CallBooleanMethod(dhcpResults, dhcpResultsFieldIds.setServerAddress, env->NewStringUTF(server)); - env->SetIntField(info, dhcpInfoInternalFieldIds.leaseDuration, lease); - env->SetObjectField(info, dhcpInfoInternalFieldIds.vendorInfo, env->NewStringUTF(vendorInfo)); + } + + if (result == 0) { + // dhcpResults->setLeaseDuration(lease) + env->CallVoidMethod(dhcpResults, + dhcpResultsFieldIds.setLeaseDuration, lease); + + // dhcpResults->setVendorInfo(vendorInfo) + env->CallVoidMethod(dhcpResults, dhcpResultsFieldIds.setVendorInfo, + env->NewStringUTF(vendorInfo)); } return (jboolean)(result == 0); } + static jboolean android_net_utils_runDhcp(JNIEnv* env, jobject clazz, jstring ifname, jobject info) { return android_net_utils_runDhcpCommon(env, clazz, ifname, info, false); @@ -217,8 +230,8 @@ static JNINativeMethod gNetworkUtilMethods[] = { { "enableInterface", "(Ljava/lang/String;)I", (void *)android_net_utils_enableInterface }, { "disableInterface", "(Ljava/lang/String;)I", (void *)android_net_utils_disableInterface }, { "resetConnections", "(Ljava/lang/String;I)I", (void *)android_net_utils_resetConnections }, - { "runDhcp", "(Ljava/lang/String;Landroid/net/DhcpInfoInternal;)Z", (void *)android_net_utils_runDhcp }, - { "runDhcpRenew", "(Ljava/lang/String;Landroid/net/DhcpInfoInternal;)Z", (void *)android_net_utils_runDhcpRenew }, + { "runDhcp", "(Ljava/lang/String;Landroid/net/DhcpResults;)Z", (void *)android_net_utils_runDhcp }, + { "runDhcpRenew", "(Ljava/lang/String;Landroid/net/DhcpResults;)Z", (void *)android_net_utils_runDhcpRenew }, { "stopDhcp", "(Ljava/lang/String;)Z", (void *)android_net_utils_stopDhcp }, { "releaseDhcpLease", "(Ljava/lang/String;)Z", (void *)android_net_utils_releaseDhcpLease }, { "getDhcpError", "()Ljava/lang/String;", (void*) android_net_utils_getDhcpError }, @@ -226,16 +239,24 @@ static JNINativeMethod gNetworkUtilMethods[] = { int register_android_net_NetworkUtils(JNIEnv* env) { - jclass dhcpInfoInternalClass = env->FindClass("android/net/DhcpInfoInternal"); - LOG_FATAL_IF(dhcpInfoInternalClass == NULL, "Unable to find class android/net/DhcpInfoInternal"); - dhcpInfoInternalFieldIds.constructorId = env->GetMethodID(dhcpInfoInternalClass, "", "()V"); - dhcpInfoInternalFieldIds.ipaddress = env->GetFieldID(dhcpInfoInternalClass, "ipAddress", "Ljava/lang/String;"); - dhcpInfoInternalFieldIds.prefixLength = env->GetFieldID(dhcpInfoInternalClass, "prefixLength", "I"); - dhcpInfoInternalFieldIds.dns1 = env->GetFieldID(dhcpInfoInternalClass, "dns1", "Ljava/lang/String;"); - dhcpInfoInternalFieldIds.dns2 = env->GetFieldID(dhcpInfoInternalClass, "dns2", "Ljava/lang/String;"); - dhcpInfoInternalFieldIds.serverAddress = env->GetFieldID(dhcpInfoInternalClass, "serverAddress", "Ljava/lang/String;"); - dhcpInfoInternalFieldIds.leaseDuration = env->GetFieldID(dhcpInfoInternalClass, "leaseDuration", "I"); - dhcpInfoInternalFieldIds.vendorInfo = env->GetFieldID(dhcpInfoInternalClass, "vendorInfo", "Ljava/lang/String;"); + jclass dhcpResultsClass = env->FindClass("android/net/DhcpResults"); + LOG_FATAL_IF(dhcpResultsClass == NULL, "Unable to find class android/net/DhcpResults"); + dhcpResultsFieldIds.clear = + env->GetMethodID(dhcpResultsClass, "clear", "()V"); + dhcpResultsFieldIds.setInterfaceName = + env->GetMethodID(dhcpResultsClass, "setInterfaceName", "(Ljava/lang/String;)V"); + dhcpResultsFieldIds.addLinkAddress = + env->GetMethodID(dhcpResultsClass, "addLinkAddress", "(Ljava/lang/String;I)Z"); + dhcpResultsFieldIds.addGateway = + env->GetMethodID(dhcpResultsClass, "addGateway", "(Ljava/lang/String;)Z"); + dhcpResultsFieldIds.addDns = + env->GetMethodID(dhcpResultsClass, "addDns", "(Ljava/lang/String;)Z"); + dhcpResultsFieldIds.setServerAddress = + env->GetMethodID(dhcpResultsClass, "setServerAddress", "(Ljava/lang/String;)Z"); + dhcpResultsFieldIds.setLeaseDuration = + env->GetMethodID(dhcpResultsClass, "setLeaseDuration", "(I)V"); + dhcpResultsFieldIds.setVendorInfo = + env->GetMethodID(dhcpResultsClass, "setVendorInfo", "(Ljava/lang/String;)V"); return AndroidRuntime::registerNativeMethods(env, NETUTILS_PKG_NAME, gNetworkUtilMethods, NELEM(gNetworkUtilMethods));