1package { 2 // See: http://go/android-license-faq 3 // A large-scale-change added 'default_applicable_licenses' to import 4 // all of the 'license_kinds' from "system_netd_license" 5 // to get the below license kinds: 6 // SPDX-license-identifier-Apache-2.0 7 default_applicable_licenses: ["system_netd_license"], 8} 9 10java_library { 11 name: "netd_aidl_interface-lateststable-java", 12 sdk_version: "system_current", 13 min_sdk_version: "29", 14 static_libs: [ 15 "netd_aidl_interface-V7-java", 16 ], 17 apex_available: [ 18 "//apex_available:platform", // used from services.net 19 "com.android.bluetooth.updatable", 20 "com.android.tethering", 21 "com.android.wifi", 22 ], 23} 24 25cc_library_static { 26 name: "netd_event_listener_interface-lateststable-ndk_platform", 27 whole_static_libs: [ 28 "netd_event_listener_interface-V1-ndk_platform", 29 ], 30 apex_available: [ 31 "com.android.resolv", 32 ], 33 min_sdk_version: "29", 34} 35 36cc_library_static { 37 name: "netd_aidl_interface-lateststable-ndk_platform", 38 whole_static_libs: [ 39 "netd_aidl_interface-V7-ndk_platform", 40 ], 41 apex_available: [ 42 "com.android.resolv", 43 ], 44 min_sdk_version: "29", 45} 46 47cc_library_static { 48 name: "netd_aidl_interface-lateststable-cpp", 49 whole_static_libs: [ 50 "netd_aidl_interface-V7-cpp", 51 ], 52} 53 54aidl_interface { 55 name: "netd_aidl_interface", 56 local_include_dir: "binder", 57 srcs: [ 58 "binder/android/net/INetd.aidl", 59 // AIDL interface that callers can implement to receive networking events from netd. 60 "binder/android/net/INetdUnsolicitedEventListener.aidl", 61 "binder/android/net/InterfaceConfigurationParcel.aidl", 62 "binder/android/net/MarkMaskParcel.aidl", 63 "binder/android/net/NativeNetworkConfig.aidl", 64 "binder/android/net/NativeNetworkType.aidl", 65 "binder/android/net/NativeVpnType.aidl", 66 "binder/android/net/RouteInfoParcel.aidl", 67 "binder/android/net/TetherConfigParcel.aidl", 68 "binder/android/net/TetherOffloadRuleParcel.aidl", 69 "binder/android/net/TetherStatsParcel.aidl", 70 "binder/android/net/UidRangeParcel.aidl", 71 // Add new AIDL classes in android.net.netd.aidl to consist with other network modules. 72 "binder/android/net/netd/aidl/**/*.aidl", 73 ], 74 backend: { 75 cpp: { 76 gen_log: true, 77 }, 78 java: { 79 // TODO: Remove apex_available and restrict visibility to only mainline modules that are 80 // either outside the system server or use jarjar to rename the generated AIDL classes. 81 apex_available: [ 82 "//apex_available:platform", // used from services.net 83 "com.android.bluetooth.updatable", 84 "com.android.tethering", 85 "com.android.wifi", 86 ], 87 // this is part of updatable modules(NetworkStack) which targets 29(Q) 88 min_sdk_version: "29", 89 }, 90 ndk: { 91 apex_available: [ 92 "//apex_available:platform", 93 ], 94 // This is necessary for the DnsResovler tests to run in Android Q. 95 // Soong would recognize this value and produce the Q compatible aidl library. 96 min_sdk_version: "29", 97 }, 98 }, 99 versions: [ 100 "1", 101 "2", 102 "3", 103 "4", 104 "5", 105 "6", 106 "7", 107 ], 108} 109 110java_library { 111 name: "netd_event_listener_interface-lateststable-java", 112 sdk_version: "system_current", 113 min_sdk_version: "29", 114 static_libs: [ 115 "netd_event_listener_interface-V1-java", 116 ], 117 apex_available: [ 118 "//apex_available:platform", 119 "com.android.bluetooth.updatable", 120 "com.android.wifi", 121 "com.android.tethering", 122 ], 123} 124 125aidl_interface { 126 name: "netd_event_listener_interface", 127 local_include_dir: "binder", 128 srcs: [ 129 "binder/android/net/metrics/INetdEventListener.aidl", 130 ], 131 versions: ["1"], 132 backend: { 133 ndk: { 134 apex_available: [ 135 "//apex_available:platform", 136 "com.android.resolv", 137 ], 138 min_sdk_version: "29", 139 }, 140 java: { 141 apex_available: [ 142 "//apex_available:platform", 143 "com.android.bluetooth.updatable", 144 "com.android.wifi", 145 "com.android.tethering", 146 ], 147 min_sdk_version: "29", 148 }, 149 }, 150} 151 152aidl_interface { 153 // This interface is for OEM calls to netd and vice versa that do not exist in AOSP. 154 // Those calls cannot be part of INetd.aidl and INetdUnsolicitedEventListener.aidl 155 // because those interfaces are versioned. 156 // These interfaces must never be versioned or OEMs will not be able to change them. 157 name: "oemnetd_aidl_interface", 158 unstable: true, 159 local_include_dir: "binder", 160 srcs: [ 161 "binder/com/android/internal/net/IOemNetd.aidl", 162 "binder/com/android/internal/net/IOemNetdUnsolicitedEventListener.aidl", 163 ], 164} 165 166// These are used in netd_integration_test 167// TODO: fold these into a cc_library_static after converting netd/server to Android.bp 168filegroup { 169 name: "netd_integration_test_shared", 170 srcs: [ 171 "NetdConstants.cpp", 172 "InterfaceController.cpp", 173 "NetlinkCommands.cpp", 174 "NetlinkListener.cpp", 175 "OffloadUtils.cpp", 176 "SockDiag.cpp", 177 "XfrmController.cpp", 178 "TrafficController.cpp", 179 ], 180} 181 182// Modules common to both netd and netd_unit_test 183cc_library_static { 184 name: "libnetd_server", 185 defaults: ["netd_defaults"], 186 include_dirs: [ 187 "system/netd/include", 188 "system/netd/server/binder", 189 ], 190 srcs: [ 191 "BandwidthController.cpp", 192 "ClatdController.cpp", 193 "Controllers.cpp", 194 "NetdConstants.cpp", 195 "FirewallController.cpp", 196 "IdletimerController.cpp", 197 "InterfaceController.cpp", 198 "IptablesRestoreController.cpp", 199 "NFLogListener.cpp", 200 "NetlinkCommands.cpp", 201 "NetlinkListener.cpp", 202 "NetlinkManager.cpp", 203 "OffloadUtils.cpp", 204 "RouteController.cpp", 205 "SockDiag.cpp", 206 "StrictController.cpp", 207 "TcpSocketMonitor.cpp", 208 "TetherController.cpp", 209 "TrafficController.cpp", 210 "UidRanges.cpp", 211 "WakeupController.cpp", 212 "XfrmController.cpp", 213 ], 214 shared_libs: [ 215 "libbpf_android", 216 "libbase", 217 "libbinder", 218 "libnetdbpf", 219 "libnetutils", 220 "libnetdutils", 221 "libpcap", 222 "libqtaguid", 223 "libssl", 224 "libsysutils", 225 "netd_aidl_interface-V7-cpp", 226 "netd_event_listener_interface-V1-cpp", 227 ], 228 aidl: { 229 export_aidl_headers: true, 230 local_include_dirs: ["binder"], 231 }, 232} 233 234cc_binary { 235 name: "netd", 236 defaults: ["netd_defaults"], 237 include_dirs: [ 238 "external/mdnsresponder/mDNSShared", 239 "system/netd/include", 240 ], 241 init_rc: ["netd.rc"], 242 required: [ 243 "bpfloader", 244 "clatd.o", 245 "netd.o", 246 ], 247 shared_libs: [ 248 "android.system.net.netd@1.0", 249 "android.system.net.netd@1.1", 250 "libbase", 251 "libbinder", 252 "libbpf_android", 253 "libcutils", 254 "libdl", 255 "libhidlbase", 256 "liblog", 257 "libmdnssd", 258 "libnetd_resolv", 259 "libnetdbpf", 260 "libnetdutils", 261 "libnetutils", 262 "libpcap", 263 "libprocessgroup", 264 "libqtaguid", 265 "libselinux", 266 "libsysutils", 267 "libutils", 268 "netd_aidl_interface-V7-cpp", 269 "netd_event_listener_interface-V1-cpp", 270 "oemnetd_aidl_interface-cpp", 271 ], 272 static_libs: [ 273 "libnetd_server", 274 ], 275 srcs: [ 276 "DummyNetwork.cpp", 277 "EventReporter.cpp", 278 "FwmarkServer.cpp", 279 "LocalNetwork.cpp", 280 "MDnsSdListener.cpp", 281 "NetdCommand.cpp", 282 "NetdHwService.cpp", 283 "NetdNativeService.cpp", 284 "NetlinkHandler.cpp", 285 "Network.cpp", 286 "NetworkController.cpp", 287 "OemNetdListener.cpp", 288 "PhysicalNetwork.cpp", 289 "PppController.cpp", 290 "Process.cpp", 291 "UnreachableNetwork.cpp", 292 "VirtualNetwork.cpp", 293 "main.cpp", 294 "oem_iptables_hook.cpp", 295 ], 296 sanitize: { 297 cfi: true, 298 }, 299} 300 301cc_binary { 302 name: "ndc", 303 defaults: ["netd_defaults"], 304 include_dirs: [ 305 "system/netd/include", 306 ], 307 header_libs: [ 308 "libnetd_client_headers", 309 ], 310 shared_libs: [ 311 "libbase", 312 "libnetdutils", 313 "libnetutils", 314 "libcutils", 315 "liblog", 316 "libutils", 317 "libbinder", 318 "dnsresolver_aidl_interface-V7-cpp", 319 "netd_aidl_interface-V6-cpp", 320 ], 321 srcs: [ 322 "ndc.cpp", 323 "UidRanges.cpp", 324 "NdcDispatcher.cpp", 325 ], 326 sanitize: { 327 cfi: true, 328 memtag_heap: true, 329 }, 330} 331 332cc_test { 333 name: "netd_unit_test", 334 defaults: ["netd_defaults"], 335 test_suites: ["device-tests"], 336 require_root: true, 337 include_dirs: [ 338 "system/netd/include", 339 "system/netd/server/binder", 340 "system/netd/tests", 341 ], 342 srcs: [ 343 "BandwidthControllerTest.cpp", 344 "ClatdControllerTest.cpp", 345 "ControllersTest.cpp", 346 "FirewallControllerTest.cpp", 347 "IdletimerControllerTest.cpp", 348 "InterfaceControllerTest.cpp", 349 "IptablesBaseTest.cpp", 350 "IptablesRestoreControllerTest.cpp", 351 "NFLogListenerTest.cpp", 352 "OffloadUtilsTest.cpp", 353 "RouteControllerTest.cpp", 354 "SockDiagTest.cpp", 355 "StrictControllerTest.cpp", 356 "TetherControllerTest.cpp", 357 "TrafficControllerTest.cpp", 358 "XfrmControllerTest.cpp", 359 "WakeupControllerTest.cpp", 360 ], 361 static_libs: [ 362 "libgmock", 363 "libnetd_server", 364 "libnetd_test_tun_interface", 365 "libqtaguid", 366 "netd_aidl_interface-V7-cpp", 367 "netd_event_listener_interface-V1-cpp", 368 ], 369 shared_libs: [ 370 "libbase", 371 "libbinder", 372 "libbpf_android", 373 "libcrypto", 374 "libcutils", 375 "liblog", 376 "libnetdbpf", 377 "libnetdutils", 378 "libnetutils", 379 "libsysutils", 380 "libutils", 381 ], 382 // tidy: false, // cuts test build time by almost 1 minute 383} 384