diff --git a/service/jni/com_android_server_BpfNetMaps.cpp b/service/jni/com_android_server_BpfNetMaps.cpp index 71fa8e4238..799ac5cdf1 100644 --- a/service/jni/com_android_server_BpfNetMaps.cpp +++ b/service/jni/com_android_server_BpfNetMaps.cpp @@ -47,8 +47,8 @@ namespace android { ALOGE("%s failed, error code = %d", __func__, status.code()); \ } while (0) -static void native_init(JNIEnv* env, jclass clazz) { - Status status = mTc.start(); +static void native_init(JNIEnv* env, jclass clazz, jboolean startSkDestroyListener) { + Status status = mTc.start(startSkDestroyListener); CHECK_LOG(status); if (!isOk(status)) { uid_t uid = getuid(); @@ -201,7 +201,7 @@ static jint native_synchronizeKernelRCU(JNIEnv* env, jobject self) { // clang-format off static const JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ - {"native_init", "()V", + {"native_init", "(Z)V", (void*)native_init}, {"native_addNaughtyApp", "(I)I", (void*)native_addNaughtyApp}, diff --git a/service/native/TrafficController.cpp b/service/native/TrafficController.cpp index a26d1e6200..7fb1b34a80 100644 --- a/service/native/TrafficController.cpp +++ b/service/native/TrafficController.cpp @@ -181,9 +181,13 @@ Status TrafficController::initMaps() { return netdutils::status::ok; } -Status TrafficController::start() { +Status TrafficController::start(bool startSkDestroyListener) { RETURN_IF_NOT_OK(initMaps()); + if (!startSkDestroyListener) { + return netdutils::status::ok; + } + auto result = makeSkDestroyListener(); if (!isOk(result)) { ALOGE("Unable to create SkDestroyListener: %s", toString(result).c_str()); diff --git a/service/native/include/TrafficController.h b/service/native/include/TrafficController.h index 8512929b8e..b44d795444 100644 --- a/service/native/include/TrafficController.h +++ b/service/native/include/TrafficController.h @@ -38,7 +38,7 @@ class TrafficController { /* * Initialize the whole controller */ - netdutils::Status start(); + netdutils::Status start(bool startSkDestroyListener); /* * Swap the stats map config from current active stats map to the idle one. diff --git a/service/src/com/android/server/BpfNetMaps.java b/service/src/com/android/server/BpfNetMaps.java index dc5c4c75b0..97449f6cb8 100644 --- a/service/src/com/android/server/BpfNetMaps.java +++ b/service/src/com/android/server/BpfNetMaps.java @@ -225,7 +225,7 @@ public class BpfNetMaps { Log.d(TAG, "BpfNetMaps is initialized with sEnableJavaBpfMap=" + sEnableJavaBpfMap); initBpfMaps(); - native_init(); + native_init(true /* startSkDestroyListener */); sInitialized = true; } @@ -839,7 +839,7 @@ public class BpfNetMaps { native_dump(fd, verbose); } - private static native void native_init(); + private static native void native_init(boolean startSkDestroyListener); private native int native_addNaughtyApp(int uid); private native int native_removeNaughtyApp(int uid); private native int native_addNiceApp(int uid);