From 17919980805314c6bfaaeae0f13e0309d2326f1c Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Fri, 10 Jul 2009 17:24:07 -0400 Subject: [PATCH] wifi: Keep the WLAN network interface up whenever wifi is enabled. We now only bring it down briefly and bring it back up again when we want to reset the interface. Signed-off-by: Mike Lockwood --- core/java/android/net/NetworkUtils.java | 3 +++ core/jni/android_net_NetUtils.cpp | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java index 1153648729..a3ae01b559 100644 --- a/core/java/android/net/NetworkUtils.java +++ b/core/java/android/net/NetworkUtils.java @@ -25,6 +25,9 @@ import java.net.UnknownHostException; * {@hide} */ public class NetworkUtils { + /** Bring the named network interface up. */ + public native static int enableInterface(String interfaceName); + /** Bring the named network interface down. */ public native static int disableInterface(String interfaceName); diff --git a/core/jni/android_net_NetUtils.cpp b/core/jni/android_net_NetUtils.cpp index 8383deb59a..feb0dadc15 100644 --- a/core/jni/android_net_NetUtils.cpp +++ b/core/jni/android_net_NetUtils.cpp @@ -23,6 +23,7 @@ #include extern "C" { +int ifc_enable(const char *ifname); int ifc_disable(const char *ifname); int ifc_add_host_route(const char *ifname, uint32_t addr); int ifc_remove_host_routes(const char *ifname); @@ -66,6 +67,16 @@ static struct fieldIds { jfieldID leaseDuration; } dhcpInfoFieldIds; +static jint android_net_utils_enableInterface(JNIEnv* env, jobject clazz, jstring ifname) +{ + int result; + + const char *nameStr = env->GetStringUTFChars(ifname, NULL); + result = ::ifc_enable(nameStr); + env->ReleaseStringUTFChars(ifname, nameStr); + return (jint)result; +} + static jint android_net_utils_disableInterface(JNIEnv* env, jobject clazz, jstring ifname) { int result; @@ -209,6 +220,7 @@ static jboolean android_net_utils_configureInterface(JNIEnv* env, static JNINativeMethod gNetworkUtilMethods[] = { /* name, signature, funcPtr */ + { "enableInterface", "(Ljava/lang/String;)I", (void *)android_net_utils_enableInterface }, { "disableInterface", "(Ljava/lang/String;)I", (void *)android_net_utils_disableInterface }, { "addHostRoute", "(Ljava/lang/String;I)I", (void *)android_net_utils_addHostRoute }, { "removeHostRoutes", "(Ljava/lang/String;)I", (void *)android_net_utils_removeHostRoutes },