Pipe DHCP vendor info towards framework.
Bug: 6344821 Change-Id: Ifb9a93c995f4d70f4ae2aa03b7e21f13013ef3b6
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user