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

Commit 1b965941 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Pipe DHCP vendor info towards framework."

parents b4aed7f5 77b87ba0
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -19,9 +19,8 @@ package android.net;
import android.text.TextUtils;
import android.util.Log;

import java.net.InetAddress;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -42,6 +41,11 @@ public class DhcpInfoInternal {
    public String serverAddress;
    public int leaseDuration;

    /**
     * Vendor specific information (from RFC 2132).
     */
    public String vendorInfo;

    private Collection<RouteInfo> mRoutes;

    public DhcpInfoInternal() {
+12 −6
Original line number Diff line number Diff line
@@ -35,7 +35,8 @@ int dhcp_do_request(const char *ifname,
                    const char *dns1,
                    const char *dns2,
                    const char *server,
                    uint32_t  *lease);
                    uint32_t *lease,
                    const char *vendorInfo);

int dhcp_do_request_renew(const char *ifname,
                    const char *ipaddr,
@@ -44,7 +45,8 @@ int dhcp_do_request_renew(const char *ifname,
                    const char *dns1,
                    const char *dns2,
                    const char *server,
                    uint32_t  *lease);
                    uint32_t *lease,
                    const char *vendorInfo);

int dhcp_stop(const char *ifname);
int dhcp_release_lease(const char *ifname);
@@ -68,6 +70,7 @@ static struct fieldIds {
    jfieldID dns2;
    jfieldID serverAddress;
    jfieldID leaseDuration;
    jfieldID vendorInfo;
} dhcpInfoInternalFieldIds;

static jint android_net_utils_enableInterface(JNIEnv* env, jobject clazz, jstring ifname)
@@ -116,16 +119,17 @@ static jboolean android_net_utils_runDhcpCommon(JNIEnv* env, jobject clazz, jstr
    char    dns2[PROPERTY_VALUE_MAX];
    char  server[PROPERTY_VALUE_MAX];
    uint32_t lease;
    char vendorInfo[PROPERTY_VALUE_MAX];

    const char *nameStr = env->GetStringUTFChars(ifname, NULL);
    if (nameStr == NULL) return (jboolean)false;

    if (renew) {
        result = ::dhcp_do_request_renew(nameStr, ipaddr, gateway, &prefixLength,
                dns1, dns2, server, &lease);
                dns1, dns2, server, &lease, vendorInfo);
    } else {
        result = ::dhcp_do_request(nameStr, ipaddr, gateway, &prefixLength,
                dns1, dns2, server, &lease);
                dns1, dns2, server, &lease, vendorInfo);
    }

    env->ReleaseStringUTFChars(ifname, nameStr);
@@ -161,6 +165,7 @@ static jboolean android_net_utils_runDhcpCommon(JNIEnv* env, jobject clazz, jstr
        env->SetObjectField(info, dhcpInfoInternalFieldIds.serverAddress,
                env->NewStringUTF(server));
        env->SetIntField(info, dhcpInfoInternalFieldIds.leaseDuration, lease);
        env->SetObjectField(info, dhcpInfoInternalFieldIds.vendorInfo, env->NewStringUTF(vendorInfo));
    }
    return (jboolean)(result == 0);
}
@@ -230,6 +235,7 @@ int register_android_net_NetworkUtils(JNIEnv* env)
    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;");

    return AndroidRuntime::registerNativeMethods(env,
            NETUTILS_PKG_NAME, gNetworkUtilMethods, NELEM(gNetworkUtilMethods));