1//
2// Copyright (C) 2018 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17// AIDL interfaces between the core system and the networking mainline module.
18package {
19    default_applicable_licenses: ["Android-Apache-2.0"],
20}
21
22aidl_interface {
23    name: "ipmemorystore-aidl-interfaces",
24    local_include_dir: "src",
25    srcs: [
26        "src/android/net/IIpMemoryStore.aidl",
27        "src/android/net/IIpMemoryStoreCallbacks.aidl",
28        "src/android/net/ipmemorystore/**/*.aidl",
29        // New AIDL classes should go into android.net.networkstack.aidl so they can be clearly
30        // identified
31        "src/android/net/networkstack/aidl/quirks/IPv6ProvisioningLossQuirkParcelable.aidl",
32    ],
33    backend: {
34        java: {
35            apex_available: [
36                "//apex_available:platform",
37                "com.android.wifi",
38                "com.android.bluetooth.updatable",
39                "com.android.tethering",
40            ],
41            // this is part of updatable modules(NetworkStack) which targets 29(Q)
42            min_sdk_version: "29",
43        },
44        ndk: {
45            enabled: false,
46        },
47        cpp: {
48            enabled: false,
49        },
50    },
51    versions: [
52        "1",
53        "2",
54        "3",
55        "4",
56        "5",
57        "6",
58        "7",
59        "8",
60        "9",
61        "10",
62    ],
63    visibility: [
64        "//system/tools/aidl/build",
65    ],
66}
67
68aidl_interface {
69    name: "networkstack-aidl-interfaces",
70    local_include_dir: "src",
71    include_dirs: [
72        // For framework parcelables.
73        "frameworks/base/core/java",
74        // For API parcelables in connectivity
75        "packages/modules/Connectivity/framework/aidl-export",
76        "frameworks/native/aidl/binder", // For PersistableBundle.aidl
77    ],
78    srcs: [
79        "src/android/net/DataStallReportParcelable.aidl",
80        "src/android/net/DhcpResultsParcelable.aidl",
81        "src/android/net/INetworkMonitor.aidl",
82        "src/android/net/INetworkMonitorCallbacks.aidl",
83        "src/android/net/INetworkStackConnector.aidl",
84        "src/android/net/INetworkStackStatusCallback.aidl",
85        "src/android/net/InitialConfigurationParcelable.aidl",
86        "src/android/net/InformationElementParcelable.aidl",
87        "src/android/net/Layer2InformationParcelable.aidl",
88        "src/android/net/Layer2PacketParcelable.aidl",
89        "src/android/net/NattKeepalivePacketDataParcelable.aidl",
90        "src/android/net/NetworkTestResultParcelable.aidl",
91        "src/android/net/PrivateDnsConfigParcel.aidl",
92        "src/android/net/ProvisioningConfigurationParcelable.aidl",
93        "src/android/net/ScanResultInfoParcelable.aidl",
94        "src/android/net/TcpKeepalivePacketDataParcelable.aidl",
95        "src/android/net/dhcp/DhcpLeaseParcelable.aidl",
96        "src/android/net/dhcp/DhcpServingParamsParcel.aidl",
97        "src/android/net/dhcp/IDhcpEventCallbacks.aidl",
98        "src/android/net/dhcp/IDhcpServer.aidl",
99        "src/android/net/dhcp/IDhcpServerCallbacks.aidl",
100        "src/android/net/ip/IIpClient.aidl",
101        "src/android/net/ip/IIpClientCallbacks.aidl",
102        // New AIDL classes should go into android.net.networkstack.aidl so they can be clearly
103        // identified
104        "src/android/net/networkstack/aidl/dhcp/DhcpOption.aidl",
105    ],
106    backend: {
107        java: {
108            apex_available: [
109                "//apex_available:platform",
110                "com.android.bluetooth.updatable",
111                "com.android.wifi",
112                "com.android.tethering",
113            ],
114            // this is part of updatable modules(NetworkStack) which targets 29(Q)
115            min_sdk_version: "29",
116        },
117        ndk: {
118            enabled: false,
119        },
120        cpp: {
121            enabled: false,
122        },
123    },
124    imports: ["ipmemorystore-aidl-interfaces"],
125    versions: [
126        "1",
127        "2",
128        "3",
129        "4",
130        "5",
131        "6",
132        "7",
133        "8",
134        "9",
135        "10",
136    ],
137    // TODO: have tethering depend on networkstack-client and set visibility to private
138    visibility: [
139        "//system/tools/aidl/build",
140        "//frameworks/base/packages/Tethering",
141        "//packages/modules/Connectivity/Tethering",
142    ],
143}
144
145java_library {
146    name: "networkstack-client",
147    sdk_version: "system_current",
148    // this is part of updatable modules(NetworkStack) which runs on Q and above
149    min_sdk_version: "29",
150    srcs: [
151        ":framework-annotations",
152        "src/android/net/ip/**/*.java",
153        "src/android/net/IpMemoryStore.java",
154        "src/android/net/IpMemoryStoreClient.java",
155        "src/android/net/ipmemorystore/**/*.java",
156        "src/android/net/NetworkMonitorManager.java",
157        "src/android/net/networkstack/**/*.java",
158        "src/android/net/networkstack/aidl/quirks/**/*.java",
159        "src/android/net/shared/**/*.java",
160        "src/android/net/util/**/*.java",
161    ],
162    libs: [
163        "net-utils-framework-common",  // XXX for IpUtils.java only
164    ],
165    static_libs: [
166        "ipmemorystore-aidl-interfaces-V10-java",
167        "networkstack-aidl-interfaces-V10-java",
168    ],
169    visibility: [
170        "//frameworks/base/packages/Connectivity/service",
171        "//packages/modules/Connectivity/Tethering",
172        "//packages/modules/Connectivity/service",
173        "//frameworks/base/services/net",
174        "//frameworks/opt/net/wifi/service",
175        "//packages/apps/Bluetooth",
176        "//packages/modules/NetworkStack",
177    ],
178    apex_available: [
179        "//apex_available:platform",
180        "com.android.tethering",
181    ],
182}
183