Pipe DHCP vendor info towards framework.

Bug: 6344821
Change-Id: Ifb9a93c995f4d70f4ae2aa03b7e21f13013ef3b6
This commit is contained in:
Jeff Sharkey
2012-04-18 21:55:14 -07:00
parent 3022ee14a2
commit d6075598cb

View File

@@ -31,20 +31,22 @@ int ifc_reset_connections(const char *ifname, int reset_mask);
int dhcp_do_request(const char *ifname, int dhcp_do_request(const char *ifname,
const char *ipaddr, const char *ipaddr,
const char *gateway, const char *gateway,
uint32_t *prefixLength, uint32_t *prefixLength,
const char *dns1, const char *dns1,
const char *dns2, const char *dns2,
const char *server, const char *server,
uint32_t *lease); uint32_t *lease,
const char *vendorInfo);
int dhcp_do_request_renew(const char *ifname, int dhcp_do_request_renew(const char *ifname,
const char *ipaddr, const char *ipaddr,
const char *gateway, const char *gateway,
uint32_t *prefixLength, uint32_t *prefixLength,
const char *dns1, const char *dns1,
const char *dns2, const char *dns2,
const char *server, const char *server,
uint32_t *lease); uint32_t *lease,
const char *vendorInfo);
int dhcp_stop(const char *ifname); int dhcp_stop(const char *ifname);
int dhcp_release_lease(const char *ifname); int dhcp_release_lease(const char *ifname);
@@ -68,6 +70,7 @@ static struct fieldIds {
jfieldID dns2; jfieldID dns2;
jfieldID serverAddress; jfieldID serverAddress;
jfieldID leaseDuration; jfieldID leaseDuration;
jfieldID vendorInfo;
} dhcpInfoInternalFieldIds; } dhcpInfoInternalFieldIds;
static jint android_net_utils_enableInterface(JNIEnv* env, jobject clazz, jstring ifname) 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 dns2[PROPERTY_VALUE_MAX];
char server[PROPERTY_VALUE_MAX]; char server[PROPERTY_VALUE_MAX];
uint32_t lease; uint32_t lease;
char vendorInfo[PROPERTY_VALUE_MAX];
const char *nameStr = env->GetStringUTFChars(ifname, NULL); const char *nameStr = env->GetStringUTFChars(ifname, NULL);
if (nameStr == NULL) return (jboolean)false; if (nameStr == NULL) return (jboolean)false;
if (renew) { if (renew) {
result = ::dhcp_do_request_renew(nameStr, ipaddr, gateway, &prefixLength, result = ::dhcp_do_request_renew(nameStr, ipaddr, gateway, &prefixLength,
dns1, dns2, server, &lease); dns1, dns2, server, &lease, vendorInfo);
} else { } else {
result = ::dhcp_do_request(nameStr, ipaddr, gateway, &prefixLength, result = ::dhcp_do_request(nameStr, ipaddr, gateway, &prefixLength,
dns1, dns2, server, &lease); dns1, dns2, server, &lease, vendorInfo);
} }
env->ReleaseStringUTFChars(ifname, nameStr); 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->SetObjectField(info, dhcpInfoInternalFieldIds.serverAddress,
env->NewStringUTF(server)); env->NewStringUTF(server));
env->SetIntField(info, dhcpInfoInternalFieldIds.leaseDuration, lease); env->SetIntField(info, dhcpInfoInternalFieldIds.leaseDuration, lease);
env->SetObjectField(info, dhcpInfoInternalFieldIds.vendorInfo, env->NewStringUTF(vendorInfo));
} }
return (jboolean)(result == 0); 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.dns2 = env->GetFieldID(dhcpInfoInternalClass, "dns2", "Ljava/lang/String;");
dhcpInfoInternalFieldIds.serverAddress = env->GetFieldID(dhcpInfoInternalClass, "serverAddress", "Ljava/lang/String;"); dhcpInfoInternalFieldIds.serverAddress = env->GetFieldID(dhcpInfoInternalClass, "serverAddress", "Ljava/lang/String;");
dhcpInfoInternalFieldIds.leaseDuration = env->GetFieldID(dhcpInfoInternalClass, "leaseDuration", "I"); dhcpInfoInternalFieldIds.leaseDuration = env->GetFieldID(dhcpInfoInternalClass, "leaseDuration", "I");
dhcpInfoInternalFieldIds.vendorInfo = env->GetFieldID(dhcpInfoInternalClass, "vendorInfo", "Ljava/lang/String;");
return AndroidRuntime::registerNativeMethods(env, return AndroidRuntime::registerNativeMethods(env,
NETUTILS_PKG_NAME, gNetworkUtilMethods, NELEM(gNetworkUtilMethods)); NETUTILS_PKG_NAME, gNetworkUtilMethods, NELEM(gNetworkUtilMethods));