diff options
Diffstat (limited to 'core/jni')
-rw-r--r-- | core/jni/android_net_NetUtils.cpp | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/core/jni/android_net_NetUtils.cpp b/core/jni/android_net_NetUtils.cpp index feb0dad..6575b9a 100644 --- a/core/jni/android_net_NetUtils.cpp +++ b/core/jni/android_net_NetUtils.cpp @@ -25,9 +25,8 @@ 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_add_route(const char *ifname, const char *destStr, uint32_t prefixLen, const char *gwStr); int ifc_remove_host_routes(const char *ifname); -int ifc_set_default_route(const char *ifname, uint32_t gateway); int ifc_get_default_route(const char *ifname); int ifc_remove_default_route(const char *ifname); int ifc_reset_connections(const char *ifname); @@ -87,13 +86,23 @@ static jint android_net_utils_disableInterface(JNIEnv* env, jobject clazz, jstri return (jint)result; } -static jint android_net_utils_addHostRoute(JNIEnv* env, jobject clazz, jstring ifname, jint addr) +static jint android_net_utils_addRoute(JNIEnv* env, jobject clazz, jstring ifname, + jstring dst, jint prefixLength, jstring gw) { int result; const char *nameStr = env->GetStringUTFChars(ifname, NULL); - result = ::ifc_add_host_route(nameStr, addr); + const char *dstStr = env->GetStringUTFChars(dst, NULL); + const char *gwStr = NULL; + if (gw != NULL) { + gwStr = env->GetStringUTFChars(gw, NULL); + } + result = ::ifc_add_route(nameStr, dstStr, prefixLength, gwStr); env->ReleaseStringUTFChars(ifname, nameStr); + env->ReleaseStringUTFChars(dst, dstStr); + if (gw != NULL) { + env->ReleaseStringUTFChars(gw, gwStr); + } return (jint)result; } @@ -107,16 +116,6 @@ static jint android_net_utils_removeHostRoutes(JNIEnv* env, jobject clazz, jstri return (jint)result; } -static jint android_net_utils_setDefaultRoute(JNIEnv* env, jobject clazz, jstring ifname, jint gateway) -{ - int result; - - const char *nameStr = env->GetStringUTFChars(ifname, NULL); - result = ::ifc_set_default_route(nameStr, gateway); - env->ReleaseStringUTFChars(ifname, nameStr); - return (jint)result; -} - static jint android_net_utils_getDefaultRoute(JNIEnv* env, jobject clazz, jstring ifname) { int result; @@ -222,9 +221,9 @@ static JNINativeMethod gNetworkUtilMethods[] = { { "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 }, + { "addRoute", "(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)I", + (void *)android_net_utils_addRoute }, { "removeHostRoutes", "(Ljava/lang/String;)I", (void *)android_net_utils_removeHostRoutes }, - { "setDefaultRoute", "(Ljava/lang/String;I)I", (void *)android_net_utils_setDefaultRoute }, { "getDefaultRoute", "(Ljava/lang/String;)I", (void *)android_net_utils_getDefaultRoute }, { "removeDefaultRoute", "(Ljava/lang/String;)I", (void *)android_net_utils_removeDefaultRoute }, { "resetConnections", "(Ljava/lang/String;)I", (void *)android_net_utils_resetConnections }, |