diff --git a/service/src/com/android/server/TestNetworkService.java b/service/src/com/android/server/TestNetworkService.java
index 7a422f7..96f4e20 100644
--- a/service/src/com/android/server/TestNetworkService.java
+++ b/service/src/com/android/server/TestNetworkService.java
@@ -135,7 +135,7 @@
             // flags atomically.
             final boolean setIffMulticast = bringUp;
             ParcelFileDescriptor tunIntf = ParcelFileDescriptor.adoptFd(
-                    ServiceConnectivityJni.nativeCreateTunTap(
+                    ServiceConnectivityJni.createTunTap(
                             isTun, hasCarrier, setIffMulticast, interfaceName));
 
             // Disable DAD and remove router_solicitation_delay before assigning link addresses.
@@ -153,7 +153,7 @@
             }
 
             if (bringUp) {
-                ServiceConnectivityJni.nativeBringUpInterface(interfaceName);
+                ServiceConnectivityJni.bringUpInterface(interfaceName);
             }
 
             return new TestNetworkInterface(tunIntf, interfaceName);
@@ -396,11 +396,11 @@
     @Override
     public void setCarrierEnabled(@NonNull TestNetworkInterface iface, boolean enabled) {
         enforceTestNetworkPermissions(mContext);
-        ServiceConnectivityJni.nativeSetTunTapCarrierEnabled(iface.getInterfaceName(),
+        ServiceConnectivityJni.setTunTapCarrierEnabled(iface.getInterfaceName(),
                 iface.getFileDescriptor().getFd(), enabled);
         // Explicitly close fd after use to prevent StrictMode from complaining.
         // Also, explicitly referencing iface guarantees that the object is not garbage collected
-        // before nativeSetTunTapCarrierEnabled() executes.
+        // before setTunTapCarrierEnabled() executes.
         try {
             iface.getFileDescriptor().close();
         } catch (IOException e) {
diff --git a/staticlibs/device/com/android/net/module/util/ServiceConnectivityJni.java b/staticlibs/device/com/android/net/module/util/ServiceConnectivityJni.java
index 3aaccaf..949ee5c 100644
--- a/staticlibs/device/com/android/net/module/util/ServiceConnectivityJni.java
+++ b/staticlibs/device/com/android/net/module/util/ServiceConnectivityJni.java
@@ -51,13 +51,13 @@
     public static native void setTime(int fd, long timeMs) throws IOException;
 
     /** Create tun/tap interface */
-    public static native int nativeCreateTunTap(boolean isTun, boolean hasCarrier,
+    public static native int createTunTap(boolean isTun, boolean hasCarrier,
             boolean setIffMulticast, @NonNull String iface);
 
     /** Enable carrier on tun/tap interface */
-    public static native void nativeSetTunTapCarrierEnabled(@NonNull String iface, int tunFd,
+    public static native void setTunTapCarrierEnabled(@NonNull String iface, int tunFd,
             boolean enabled);
 
     /** Bring up tun/tap interface */
-    public static native void nativeBringUpInterface(String iface);
+    public static native void bringUpInterface(String iface);
 }
diff --git a/staticlibs/native/serviceconnectivityjni/com_android_net_module_util_ServiceConnectivityJni.cpp b/staticlibs/native/serviceconnectivityjni/com_android_net_module_util_ServiceConnectivityJni.cpp
index 150f84e..cf50306 100644
--- a/staticlibs/native/serviceconnectivityjni/com_android_net_module_util_ServiceConnectivityJni.cpp
+++ b/staticlibs/native/serviceconnectivityjni/com_android_net_module_util_ServiceConnectivityJni.cpp
@@ -189,9 +189,9 @@
      (void *)com_android_net_module_util_ServiceConnectivityJni_createTimerFd},
     {"setTime", "(IJ)V",
      (void *)com_android_net_module_util_ServiceConnectivityJni_setTime},
-    {"nativeSetTunTapCarrierEnabled", "(Ljava/lang/String;IZ)V", (void*)setTunTapCarrierEnabled},
-    {"nativeCreateTunTap", "(ZZZLjava/lang/String;)I", (void*)createTunTap},
-    {"nativeBringUpInterface", "(Ljava/lang/String;)V", (void*)bringUpInterface},
+    {"setTunTapCarrierEnabled", "(Ljava/lang/String;IZ)V", (void*)setTunTapCarrierEnabled},
+    {"createTunTap", "(ZZZLjava/lang/String;)I", (void*)createTunTap},
+    {"bringUpInterface", "(Ljava/lang/String;)V", (void*)bringUpInterface},
 };
 
 int register_com_android_net_module_util_ServiceConnectivityJni(JNIEnv *env,
