blob: aa932c22ce5c77cdef2a9a0ddc9aff1116677e63 [file] [log] [blame]
aidl_interface {
name: "netd_aidl_interface",
local_include_dir: "binder",
srcs: [
"binder/android/net/INetd.aidl",
// AIDL interface that callers can implement to receive networking events from netd.
"binder/android/net/INetdUnsolicitedEventListener.aidl",
"binder/android/net/InterfaceConfigurationParcel.aidl",
"binder/android/net/MarkMaskParcel.aidl",
"binder/android/net/RouteInfoParcel.aidl",
"binder/android/net/TetherConfigParcel.aidl",
"binder/android/net/TetherOffloadRuleParcel.aidl",
"binder/android/net/TetherStatsParcel.aidl",
"binder/android/net/UidRangeParcel.aidl",
],
backend: {
cpp: {
gen_log: true,
},
java: {
// TODO: Remove apex_available and restrict visibility to only mainline modules that are
// either outside the system server or use jarjar to rename the generated AIDL classes.
apex_available: [
"//apex_available:platform", // used from services.net
"com.android.bluetooth.updatable",
"com.android.tethering",
"com.android.wifi",
],
},
},
versions: [
"1",
"2",
"3",
"4",
],
}
aidl_interface {
name: "netd_event_listener_interface",
local_include_dir: "binder",
srcs: [
"binder/android/net/metrics/INetdEventListener.aidl",
],
versions: ["1"],
backend: {
ndk: {
apex_available: [
"//apex_available:platform",
"com.android.resolv",
],
min_sdk_version: "29",
},
},
}
aidl_interface {
// This interface is for OEM calls to netd and vice versa that do not exist in AOSP.
// Those calls cannot be part of INetd.aidl and INetdUnsolicitedEventListener.aidl
// because those interfaces are versioned.
// These interfaces must never be versioned or OEMs will not be able to change them.
name: "oemnetd_aidl_interface",
unstable: true,
local_include_dir: "binder",
srcs: [
"binder/com/android/internal/net/IOemNetd.aidl",
"binder/com/android/internal/net/IOemNetdUnsolicitedEventListener.aidl",
],
}
// Convenience build target for the version of the netd stable AIDL interface used by the platform.
// This exists to ensure that all non-updatable code in the system server uses the same version.
// Mixing different versions of generated classes results in code non-deterministically(?) using one
// of the compiled-in versions, and potentially crashing when code compiled against a newer version
// ends up using a generated class from an older version and calls methods that don't exist.
// This must be a frozen version on REL builds and can be -unstable on development builds.
// See http://b/143560726 for an example.
java_library {
name: "netd_aidl_interfaces-platform-java",
static_libs: [
"netd_aidl_interface-java",
"netd_event_listener_interface-java",
],
// TODO: remove bluetooth, which doesn't actually use netd at all.
apex_available: [
"//apex_available:platform", // due to the dependency from services.net
"com.android.bluetooth.updatable",
],
sdk_version: "system_current",
}
// These are used in netd_integration_test
// TODO: fold these into a cc_library_static after converting netd/server to Android.bp
filegroup {
name: "netd_integration_test_shared",
srcs: [
"NetdConstants.cpp",
"InterfaceController.cpp",
"NetlinkCommands.cpp",
"NetlinkListener.cpp",
"OffloadUtils.cpp",
"SockDiag.cpp",
"XfrmController.cpp",
"TrafficController.cpp",
],
}
// Modules common to both netd and netd_unit_test
cc_library_static {
name: "libnetd_server",
defaults: ["netd_defaults"],
include_dirs: [
"system/netd/include",
"system/netd/server/binder",
],
srcs: [
"BandwidthController.cpp",
"ClatdController.cpp",
"Controllers.cpp",
"NetdConstants.cpp",
"FirewallController.cpp",
"IdletimerController.cpp",
"InterfaceController.cpp",
"IptablesRestoreController.cpp",
"NFLogListener.cpp",
"NetlinkCommands.cpp",
"NetlinkListener.cpp",
"NetlinkManager.cpp",
"OffloadUtils.cpp",
"RouteController.cpp",
"SockDiag.cpp",
"StrictController.cpp",
"TcpSocketMonitor.cpp",
"TetherController.cpp",
"TrafficController.cpp",
"UidRanges.cpp",
"WakeupController.cpp",
"XfrmController.cpp",
],
shared_libs: [
"libbpf_android",
"libbase",
"libbinder",
"libnetdbpf",
"libnetutils",
"libnetdutils",
"libpcap",
"libqtaguid",
"libssl",
"netd_aidl_interface-cpp",
"netd_event_listener_interface-cpp",
],
aidl: {
export_aidl_headers: true,
local_include_dirs: ["binder"],
},
}
cc_binary {
name: "netd",
defaults: ["netd_defaults"],
include_dirs: [
"external/mdnsresponder/mDNSShared",
"system/netd/include",
],
init_rc: ["netd.rc"],
required: [
"bpfloader",
"clatd.o",
"netd.o",
"offload.o",
],
shared_libs: [
"android.system.net.netd@1.0",
"android.system.net.netd@1.1",
"libbase",
"libbinder",
"libbpf_android",
"libcutils",
"libdl",
"libhidlbase",
"libjsoncpp",
"liblog",
"libmdnssd",
"libnetd_resolv",
"libnetdbpf",
"libnetdutils",
"libnetutils",
"libpcap",
"libprocessgroup",
"libqtaguid",
"libselinux",
"libsysutils",
"libutils",
"netd_aidl_interface-cpp",
"netd_event_listener_interface-cpp",
"oemnetd_aidl_interface-cpp",
],
static_libs: [
"libnetd_server",
],
srcs: [
"DummyNetwork.cpp",
"EventReporter.cpp",
"FwmarkServer.cpp",
"LocalNetwork.cpp",
"MDnsSdListener.cpp",
"NetdCommand.cpp",
"NetdHwService.cpp",
"NetdNativeService.cpp",
"NetlinkHandler.cpp",
"Network.cpp",
"NetworkController.cpp",
"OemNetdListener.cpp",
"PhysicalNetwork.cpp",
"PppController.cpp",
"Process.cpp",
"VirtualNetwork.cpp",
"main.cpp",
"oem_iptables_hook.cpp",
],
sanitize: {
cfi: true,
},
}
cc_binary {
name: "ndc",
defaults: ["netd_defaults"],
include_dirs: [
"system/netd/include",
],
header_libs: [
"libnetd_client_headers",
],
shared_libs: [
"libbase",
"libnetdutils",
"libnetutils",
"libcutils",
"liblog",
"libutils",
"libbinder",
"dnsresolver_aidl_interface-cpp",
"netd_aidl_interface-cpp",
],
srcs: [
"ndc.cpp",
"UidRanges.cpp",
"NdcDispatcher.cpp",
],
sanitize: {
cfi: true,
},
}
cc_test {
name: "netd_unit_test",
defaults: ["netd_defaults"],
test_suites: ["device-tests"],
require_root: true,
include_dirs: [
"system/netd/include",
"system/netd/server/binder",
"system/netd/tests",
],
srcs: [
"BandwidthControllerTest.cpp",
"ClatdControllerTest.cpp",
"ControllersTest.cpp",
"FirewallControllerTest.cpp",
"IdletimerControllerTest.cpp",
"InterfaceControllerTest.cpp",
"IptablesBaseTest.cpp",
"IptablesRestoreControllerTest.cpp",
"NFLogListenerTest.cpp",
"OffloadUtilsTest.cpp",
"RouteControllerTest.cpp",
"SockDiagTest.cpp",
"StrictControllerTest.cpp",
"TetherControllerTest.cpp",
"TrafficControllerTest.cpp",
"XfrmControllerTest.cpp",
"WakeupControllerTest.cpp",
],
static_libs: [
"libgmock",
"libnetd_server",
"libnetd_test_tun_interface",
"libqtaguid",
"netd_aidl_interface-unstable-cpp",
"netd_event_listener_interface-cpp",
],
shared_libs: [
"libbase",
"libbinder",
"libbpf_android",
"libcrypto",
"libcutils",
"liblog",
"libnetdbpf",
"libnetdutils",
"libnetutils",
"libsysutils",
"libutils",
],
// tidy: false, // cuts test build time by almost 1 minute
}