Configure eBPF offload at clat starting if possible.
Bug: 212345928
Test: connect to ipv6 only network and check bpf entries
$adb shell dumpsys netd --short | grep Clat -A10
ClatdController
Trackers: iif[iface] nat64Prefix v6Addr -> v4Addr v4iif[v4iface] [fwmark]
BPF ingress map: iif(iface) nat64Prefix v6Addr -> v4Addr oif(iface)
47(wlan0) 64:ff9b::/96 2a00:79e1:abc:6f02:b7aa:ff3c:9220:595c -> 192.0.0.4 52(v4-wlan0)
BPF egress map: iif(iface) v4Addr -> v6Addr nat64Prefix oif(iface)
52(v4-wlan0) 192.0.0.4 -> 2a00:79e1:abc:6f02:b7aa:ff3c:9220:595c 64:ff9b::/96 47(wlan0) ether
Change-Id: I8ff77a2e3e86bfe6dbf43f4181414e444ba0da32
174 lines
4.9 KiB
Plaintext
174 lines
4.9 KiB
Plaintext
//
|
|
// Copyright (C) 2020 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.
|
|
//
|
|
|
|
package {
|
|
// See: http://go/android-license-faq
|
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
|
}
|
|
|
|
// The library name match the service-connectivity jarjar rules that put the JNI utils in the
|
|
// com.android.connectivity.com.android.net.module.util package.
|
|
cc_library_shared {
|
|
name: "libcom_android_connectivity_com_android_net_module_util_jni",
|
|
min_sdk_version: "30",
|
|
cflags: [
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wno-unused-parameter",
|
|
"-Wthread-safety",
|
|
],
|
|
srcs: [
|
|
"jni/com_android_net_module_util/onload.cpp",
|
|
],
|
|
stl: "libc++_static",
|
|
static_libs: [
|
|
"libnet_utils_device_common_bpfjni",
|
|
],
|
|
shared_libs: [
|
|
"liblog",
|
|
"libnativehelper",
|
|
],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
cc_library_shared {
|
|
name: "libservice-connectivity",
|
|
min_sdk_version: "30",
|
|
cflags: [
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wno-unused-parameter",
|
|
"-Wthread-safety",
|
|
],
|
|
srcs: [
|
|
"jni/com_android_server_TestNetworkService.cpp",
|
|
"jni/com_android_server_connectivity_ClatCoordinator.cpp",
|
|
"jni/onload.cpp",
|
|
],
|
|
stl: "libc++_static",
|
|
header_libs: [
|
|
"libbase_headers",
|
|
],
|
|
static_libs: [
|
|
"libbase",
|
|
"libclat",
|
|
"libip_checksum",
|
|
"libnetjniutils",
|
|
],
|
|
shared_libs: [
|
|
"liblog",
|
|
"libnativehelper",
|
|
],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
java_library {
|
|
name: "service-connectivity-pre-jarjar",
|
|
sdk_version: "system_server_current",
|
|
min_sdk_version: "30",
|
|
srcs: [
|
|
"src/**/*.java",
|
|
":framework-connectivity-shared-srcs",
|
|
":services-connectivity-shared-srcs",
|
|
// TODO: move to net-utils-device-common
|
|
":connectivity-module-utils-srcs",
|
|
],
|
|
libs: [
|
|
"framework-annotations-lib",
|
|
"framework-connectivity.impl",
|
|
"framework-tethering.stubs.module_lib",
|
|
"framework-wifi.stubs.module_lib",
|
|
"unsupportedappusage",
|
|
"ServiceConnectivityResources",
|
|
],
|
|
static_libs: [
|
|
"dnsresolver_aidl_interface-V9-java",
|
|
"modules-utils-build",
|
|
"modules-utils-shell-command-handler",
|
|
"net-utils-device-common",
|
|
"net-utils-device-common-bpf",
|
|
"net-utils-device-common-netlink",
|
|
"net-utils-framework-common",
|
|
"netd-client",
|
|
"networkstack-client",
|
|
"PlatformProperties",
|
|
"service-connectivity-protos",
|
|
],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
lint: { strict_updatability_linting: true },
|
|
visibility: [
|
|
"//packages/modules/Connectivity/service-t",
|
|
"//packages/modules/Connectivity/tests:__subpackages__",
|
|
],
|
|
}
|
|
|
|
java_library {
|
|
name: "service-connectivity-protos",
|
|
sdk_version: "system_current",
|
|
min_sdk_version: "30",
|
|
proto: {
|
|
type: "nano",
|
|
},
|
|
srcs: [
|
|
":system-messages-proto-src",
|
|
],
|
|
libs: ["libprotobuf-java-nano"],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
lint: { strict_updatability_linting: true },
|
|
}
|
|
|
|
java_library {
|
|
name: "service-connectivity",
|
|
sdk_version: "system_server_current",
|
|
min_sdk_version: "30",
|
|
installable: true,
|
|
// This library combines system server jars that have access to different bootclasspath jars.
|
|
// Lower SDK service jars must not depend on higher SDK jars as that would let them
|
|
// transitively depend on the wrong bootclasspath jars. Sources also cannot be added here as
|
|
// they would transitively depend on bootclasspath jars that may not be available.
|
|
static_libs: [
|
|
"service-connectivity-pre-jarjar",
|
|
"service-connectivity-tiramisu-pre-jarjar",
|
|
],
|
|
jarjar_rules: "jarjar-rules.txt",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
lint: { strict_updatability_linting: true },
|
|
}
|
|
|
|
filegroup {
|
|
name: "connectivity-jarjar-rules",
|
|
srcs: ["jarjar-rules.txt"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
// TODO: This filegroup temporary exposes for NetworkStats. It should be
|
|
// removed right after NetworkStats moves into mainline module.
|
|
filegroup {
|
|
name: "traffic-controller-utils",
|
|
srcs: ["src/com/android/server/BpfNetMaps.java"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|