Use libnetjniutils for JNI File Descriptor info

Drops use of deprecated API in libnativehelper and uses a common
helper that will be stable across releases.

Bug: 158749603
Test: m
Change-Id: Ic1a1811ffb9a1c207f562a180417e99df31e3502
This commit is contained in:
Orion Hodson
2020-12-08 09:57:42 +00:00
parent d01761e07f
commit e5bd0dba21
2 changed files with 6 additions and 3 deletions

View File

@@ -67,6 +67,9 @@ cc_library {
"liblog", "liblog",
"libnativehelper_compat_libc++", "libnativehelper_compat_libc++",
], ],
static_libs: [
"libnetjniutils",
],
// We cannot use plain "libc++" here to link libc++ dynamically because it results in: // We cannot use plain "libc++" here to link libc++ dynamically because it results in:
// java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found // java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found

View File

@@ -19,8 +19,8 @@
#include <jni.h> #include <jni.h>
#include <linux/filter.h> #include <linux/filter.h>
#include <nativehelper/JNIHelp.h> #include <nativehelper/JNIHelp.h>
#include <nativehelper/JNIHelpCompat.h>
#include <nativehelper/ScopedUtfChars.h> #include <nativehelper/ScopedUtfChars.h>
#include <netjniutils/netjniutils.h>
#include <net/if.h> #include <net/if.h>
#include <netinet/ether.h> #include <netinet/ether.h>
#include <netinet/ip6.h> #include <netinet/ip6.h>
@@ -57,7 +57,7 @@ static void android_net_util_setupIcmpFilter(JNIEnv *env, jobject javaFd, uint32
filter_code, filter_code,
}; };
int fd = jniGetFDFromFileDescriptor(env, javaFd); int fd = netjniutils::GetNativeFileDescriptor(env, javaFd);
if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)) != 0) { if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)) != 0) {
jniThrowExceptionFmt(env, "java/net/SocketException", jniThrowExceptionFmt(env, "java/net/SocketException",
"setsockopt(SO_ATTACH_FILTER): %s", strerror(errno)); "setsockopt(SO_ATTACH_FILTER): %s", strerror(errno));
@@ -79,7 +79,7 @@ static void android_net_util_setupRaSocket(JNIEnv *env, jobject clazz, jobject j
{ {
static const int kLinkLocalHopLimit = 255; static const int kLinkLocalHopLimit = 255;
int fd = jniGetFDFromFileDescriptor(env, javaFd); int fd = netjniutils::GetNativeFileDescriptor(env, javaFd);
// Set an ICMPv6 filter that only passes Router Solicitations. // Set an ICMPv6 filter that only passes Router Solicitations.
struct icmp6_filter rs_only; struct icmp6_filter rs_only;