Loading core/java/android/net/NetworkUtils.java +16 −2 Original line number Diff line number Diff line Loading @@ -38,8 +38,22 @@ public class NetworkUtils { /** Bring the named network interface down. */ public native static int disableInterface(String interfaceName); /** Reset any sockets that are connected via the named interface. */ public native static int resetConnections(String interfaceName); /** Setting bit 0 indicates reseting of IPv4 addresses required */ public static final int RESET_IPV4_ADDRESSES = 0x01; /** Setting bit 1 indicates reseting of IPv4 addresses required */ public static final int RESET_IPV6_ADDRESSES = 0x02; /** Reset all addresses */ public static final int RESET_ALL_ADDRESSES = RESET_IPV4_ADDRESSES | RESET_IPV6_ADDRESSES; /** * Reset IPv6 or IPv4 sockets that are connected via the named interface. * * @param interfaceName is the interface to reset * @param mask {@see #RESET_IPV4_ADDRESSES} and {@see #RESET_IPV6_ADDRESSES} */ public native static int resetConnections(String interfaceName, int mask); /** * Start the DHCP client daemon, in order to have it request addresses Loading core/jni/android_net_NetUtils.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ extern "C" { int ifc_enable(const char *ifname); int ifc_disable(const char *ifname); int ifc_reset_connections(const char *ifname); int ifc_reset_connections(const char *ifname, int reset_mask); int dhcp_do_request(const char *ifname, const char *ipaddr, Loading Loading @@ -91,12 +91,17 @@ static jint android_net_utils_disableInterface(JNIEnv* env, jobject clazz, jstri return (jint)result; } static jint android_net_utils_resetConnections(JNIEnv* env, jobject clazz, jstring ifname) static jint android_net_utils_resetConnections(JNIEnv* env, jobject clazz, jstring ifname, jint mask) { int result; const char *nameStr = env->GetStringUTFChars(ifname, NULL); result = ::ifc_reset_connections(nameStr); LOGD("android_net_utils_resetConnections in env=%p clazz=%p iface=%s mask=0x%x\n", env, clazz, nameStr, mask); result = ::ifc_reset_connections(nameStr, mask); env->ReleaseStringUTFChars(ifname, nameStr); return (jint)result; } Loading Loading @@ -207,7 +212,7 @@ 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", (void *)android_net_utils_resetConnections }, { "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 }, { "stopDhcp", "(Ljava/lang/String;)Z", (void *)android_net_utils_stopDhcp }, Loading services/java/com/android/server/ConnectivityService.java +4 −2 Original line number Diff line number Diff line Loading @@ -1449,8 +1449,10 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (linkProperties != null) { String iface = linkProperties.getInterfaceName(); if (TextUtils.isEmpty(iface) == false) { if (DBG) log("resetConnections(" + iface + ")"); NetworkUtils.resetConnections(iface); if (DBG) { log("resetConnections(" + iface + ", NetworkUtils.RESET_ALL_ADDRESSES)"); } NetworkUtils.resetConnections(iface, NetworkUtils.RESET_ALL_ADDRESSES); } } } Loading wifi/java/android/net/wifi/WifiStateMachine.java +2 −2 Original line number Diff line number Diff line Loading @@ -1415,7 +1415,7 @@ public class WifiStateMachine extends StateMachine { /* * stop DHCP */ NetworkUtils.resetConnections(mInterfaceName); NetworkUtils.resetConnections(mInterfaceName, NetworkUtils.RESET_ALL_ADDRESSES); if (mDhcpStateMachine != null) { mDhcpStateMachine.sendMessage(DhcpStateMachine.CMD_STOP_DHCP); Loading Loading @@ -1509,7 +1509,7 @@ public class WifiStateMachine extends StateMachine { if (!linkProperties.equals(mLinkProperties)) { Log.d(TAG, "Link configuration changed for netId: " + mLastNetworkId + " old: " + mLinkProperties + "new: " + linkProperties); NetworkUtils.resetConnections(mInterfaceName); NetworkUtils.resetConnections(mInterfaceName, NetworkUtils.RESET_ALL_ADDRESSES); mLinkProperties = linkProperties; sendLinkConfigurationChangedBroadcast(); } Loading Loading
core/java/android/net/NetworkUtils.java +16 −2 Original line number Diff line number Diff line Loading @@ -38,8 +38,22 @@ public class NetworkUtils { /** Bring the named network interface down. */ public native static int disableInterface(String interfaceName); /** Reset any sockets that are connected via the named interface. */ public native static int resetConnections(String interfaceName); /** Setting bit 0 indicates reseting of IPv4 addresses required */ public static final int RESET_IPV4_ADDRESSES = 0x01; /** Setting bit 1 indicates reseting of IPv4 addresses required */ public static final int RESET_IPV6_ADDRESSES = 0x02; /** Reset all addresses */ public static final int RESET_ALL_ADDRESSES = RESET_IPV4_ADDRESSES | RESET_IPV6_ADDRESSES; /** * Reset IPv6 or IPv4 sockets that are connected via the named interface. * * @param interfaceName is the interface to reset * @param mask {@see #RESET_IPV4_ADDRESSES} and {@see #RESET_IPV6_ADDRESSES} */ public native static int resetConnections(String interfaceName, int mask); /** * Start the DHCP client daemon, in order to have it request addresses Loading
core/jni/android_net_NetUtils.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ extern "C" { int ifc_enable(const char *ifname); int ifc_disable(const char *ifname); int ifc_reset_connections(const char *ifname); int ifc_reset_connections(const char *ifname, int reset_mask); int dhcp_do_request(const char *ifname, const char *ipaddr, Loading Loading @@ -91,12 +91,17 @@ static jint android_net_utils_disableInterface(JNIEnv* env, jobject clazz, jstri return (jint)result; } static jint android_net_utils_resetConnections(JNIEnv* env, jobject clazz, jstring ifname) static jint android_net_utils_resetConnections(JNIEnv* env, jobject clazz, jstring ifname, jint mask) { int result; const char *nameStr = env->GetStringUTFChars(ifname, NULL); result = ::ifc_reset_connections(nameStr); LOGD("android_net_utils_resetConnections in env=%p clazz=%p iface=%s mask=0x%x\n", env, clazz, nameStr, mask); result = ::ifc_reset_connections(nameStr, mask); env->ReleaseStringUTFChars(ifname, nameStr); return (jint)result; } Loading Loading @@ -207,7 +212,7 @@ 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", (void *)android_net_utils_resetConnections }, { "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 }, { "stopDhcp", "(Ljava/lang/String;)Z", (void *)android_net_utils_stopDhcp }, Loading
services/java/com/android/server/ConnectivityService.java +4 −2 Original line number Diff line number Diff line Loading @@ -1449,8 +1449,10 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (linkProperties != null) { String iface = linkProperties.getInterfaceName(); if (TextUtils.isEmpty(iface) == false) { if (DBG) log("resetConnections(" + iface + ")"); NetworkUtils.resetConnections(iface); if (DBG) { log("resetConnections(" + iface + ", NetworkUtils.RESET_ALL_ADDRESSES)"); } NetworkUtils.resetConnections(iface, NetworkUtils.RESET_ALL_ADDRESSES); } } } Loading
wifi/java/android/net/wifi/WifiStateMachine.java +2 −2 Original line number Diff line number Diff line Loading @@ -1415,7 +1415,7 @@ public class WifiStateMachine extends StateMachine { /* * stop DHCP */ NetworkUtils.resetConnections(mInterfaceName); NetworkUtils.resetConnections(mInterfaceName, NetworkUtils.RESET_ALL_ADDRESSES); if (mDhcpStateMachine != null) { mDhcpStateMachine.sendMessage(DhcpStateMachine.CMD_STOP_DHCP); Loading Loading @@ -1509,7 +1509,7 @@ public class WifiStateMachine extends StateMachine { if (!linkProperties.equals(mLinkProperties)) { Log.d(TAG, "Link configuration changed for netId: " + mLastNetworkId + " old: " + mLinkProperties + "new: " + linkProperties); NetworkUtils.resetConnections(mInterfaceName); NetworkUtils.resetConnections(mInterfaceName, NetworkUtils.RESET_ALL_ADDRESSES); mLinkProperties = linkProperties; sendLinkConfigurationChangedBroadcast(); } Loading