summaryrefslogtreecommitdiff
path: root/common/native/bpfmapjni/com_android_net_module_util_TcUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/native/bpfmapjni/com_android_net_module_util_TcUtils.cpp')
-rw-r--r--common/native/bpfmapjni/com_android_net_module_util_TcUtils.cpp121
1 files changed, 0 insertions, 121 deletions
diff --git a/common/native/bpfmapjni/com_android_net_module_util_TcUtils.cpp b/common/native/bpfmapjni/com_android_net_module_util_TcUtils.cpp
deleted file mode 100644
index cb06afbd..00000000
--- a/common/native/bpfmapjni/com_android_net_module_util_TcUtils.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <jni.h>
-#include <nativehelper/JNIHelp.h>
-#include <nativehelper/scoped_utf_chars.h>
-#include <tcutils/tcutils.h>
-
-namespace android {
-
-static void throwIOException(JNIEnv *env, const char *msg, int error) {
- jniThrowExceptionFmt(env, "java/io/IOException", "%s: %s", msg,
- strerror(error));
-}
-
-static jboolean com_android_net_module_util_TcUtils_isEthernet(JNIEnv *env,
- jobject clazz,
- jstring iface) {
- ScopedUtfChars interface(env, iface);
- bool result = false;
- int error = isEthernet(interface.c_str(), result);
- if (error) {
- throwIOException(
- env, "com_android_net_module_util_TcUtils_isEthernet error: ", -error);
- }
- // result is not touched when error is returned; leave false.
- return result;
-}
-
-// tc filter add dev .. in/egress prio 1 protocol ipv6/ip bpf object-pinned
-// /sys/fs/bpf/... direct-action
-static void com_android_net_module_util_TcUtils_tcFilterAddDevBpf(
- JNIEnv *env, jobject clazz, jint ifIndex, jboolean ingress, jshort prio,
- jshort proto, jstring bpfProgPath) {
- ScopedUtfChars pathname(env, bpfProgPath);
- int error = tcAddBpfFilter(ifIndex, ingress, prio, proto, pathname.c_str());
- if (error) {
- throwIOException(
- env,
- "com_android_net_module_util_TcUtils_tcFilterAddDevBpf error: ", -error);
- }
-}
-
-// tc filter add dev .. ingress prio .. protocol .. matchall \
-// action police rate .. burst .. conform-exceed pipe/continue \
-// action bpf object-pinned .. \
-// drop
-static void com_android_net_module_util_TcUtils_tcFilterAddDevIngressPolice(
- JNIEnv *env, jobject clazz, jint ifIndex, jshort prio, jshort proto,
- jint rateInBytesPerSec, jstring bpfProgPath) {
- ScopedUtfChars pathname(env, bpfProgPath);
- int error = tcAddIngressPoliceFilter(ifIndex, prio, proto, rateInBytesPerSec,
- pathname.c_str());
- if (error) {
- throwIOException(env,
- "com_android_net_module_util_TcUtils_"
- "tcFilterAddDevIngressPolice error: ",
- -error);
- }
-}
-
-// tc filter del dev .. in/egress prio .. protocol ..
-static void com_android_net_module_util_TcUtils_tcFilterDelDev(
- JNIEnv *env, jobject clazz, jint ifIndex, jboolean ingress, jshort prio,
- jshort proto) {
- int error = tcDeleteFilter(ifIndex, ingress, prio, proto);
- if (error) {
- throwIOException(
- env,
- "com_android_net_module_util_TcUtils_tcFilterDelDev error: ", -error);
- }
-}
-
-// tc qdisc add dev .. clsact
-static void com_android_net_module_util_TcUtils_tcQdiscAddDevClsact(JNIEnv *env,
- jobject clazz,
- jint ifIndex) {
- int error = tcAddQdiscClsact(ifIndex);
- if (error) {
- throwIOException(
- env,
- "com_android_net_module_util_TcUtils_tcQdiscAddDevClsact error: ", -error);
- }
-}
-
-/*
- * JNI registration.
- */
-static const JNINativeMethod gMethods[] = {
- /* name, signature, funcPtr */
- {"isEthernet", "(Ljava/lang/String;)Z",
- (void *)com_android_net_module_util_TcUtils_isEthernet},
- {"tcFilterAddDevBpf", "(IZSSLjava/lang/String;)V",
- (void *)com_android_net_module_util_TcUtils_tcFilterAddDevBpf},
- {"tcFilterAddDevIngressPolice", "(ISSILjava/lang/String;)V",
- (void *)com_android_net_module_util_TcUtils_tcFilterAddDevIngressPolice},
- {"tcFilterDelDev", "(IZSS)V",
- (void *)com_android_net_module_util_TcUtils_tcFilterDelDev},
- {"tcQdiscAddDevClsact", "(I)V",
- (void *)com_android_net_module_util_TcUtils_tcQdiscAddDevClsact},
-};
-
-int register_com_android_net_module_util_TcUtils(JNIEnv *env,
- char const *class_name) {
- return jniRegisterNativeMethods(env, class_name, gMethods, NELEM(gMethods));
-}
-
-}; // namespace android