blob: f909d1362550bcd1d0848498d66e6ea59b4857ee [file] [log] [blame]
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +09001/**
2 * Copyright (c) 2008, 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
17package android.net;
18
19import android.app.PendingIntent;
20import android.net.ConnectionInfo;
21import android.net.ConnectivityDiagnosticsManager;
22import android.net.IConnectivityDiagnosticsCallback;
23import android.net.IQosCallback;
24import android.net.ISocketKeepaliveCallback;
25import android.net.LinkProperties;
26import android.net.Network;
27import android.net.NetworkAgentConfig;
28import android.net.NetworkCapabilities;
29import android.net.NetworkInfo;
30import android.net.NetworkRequest;
31import android.net.NetworkState;
James Mattis452c6ff2021-01-01 14:13:35 -080032import android.net.OemNetworkPreferences;
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +090033import android.net.ProxyInfo;
34import android.net.UidRange;
35import android.net.QosSocketInfo;
36import android.os.Bundle;
37import android.os.IBinder;
38import android.os.INetworkActivityListener;
39import android.os.Messenger;
40import android.os.ParcelFileDescriptor;
41import android.os.PersistableBundle;
42import android.os.ResultReceiver;
43
44import com.android.connectivity.aidl.INetworkAgent;
45import com.android.internal.net.LegacyVpnInfo;
46import com.android.internal.net.VpnConfig;
47import com.android.internal.net.VpnProfile;
48
49/**
50 * Interface that answers queries about, and allows changing, the
51 * state of network connectivity.
52 */
53/** {@hide} */
54interface IConnectivityManager
55{
56 Network getActiveNetwork();
57 Network getActiveNetworkForUid(int uid, boolean ignoreBlocked);
58 @UnsupportedAppUsage
59 NetworkInfo getActiveNetworkInfo();
60 NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked);
61 @UnsupportedAppUsage(maxTargetSdk = 28)
62 NetworkInfo getNetworkInfo(int networkType);
63 NetworkInfo getNetworkInfoForUid(in Network network, int uid, boolean ignoreBlocked);
64 @UnsupportedAppUsage
65 NetworkInfo[] getAllNetworkInfo();
66 Network getNetworkForType(int networkType);
67 Network[] getAllNetworks();
68 NetworkCapabilities[] getDefaultNetworkCapabilitiesForUser(
Roshan Piusa8a477b2020-12-17 14:53:09 -080069 int userId, String callingPackageName, String callingAttributionTag);
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +090070
71 boolean isNetworkSupported(int networkType);
72
73 @UnsupportedAppUsage
74 LinkProperties getActiveLinkProperties();
75 LinkProperties getLinkPropertiesForType(int networkType);
76 LinkProperties getLinkProperties(in Network network);
77
Roshan Piusa8a477b2020-12-17 14:53:09 -080078 NetworkCapabilities getNetworkCapabilities(in Network network, String callingPackageName,
79 String callingAttributionTag);
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +090080
81 @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
82 NetworkState[] getAllNetworkState();
83
84 boolean isActiveNetworkMetered();
85
86 boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress,
87 String callingPackageName, String callingAttributionTag);
88
89 @UnsupportedAppUsage(maxTargetSdk = 29,
90 publicAlternatives = "Use {@code TetheringManager#getLastTetherError} as alternative")
91 int getLastTetherError(String iface);
92
93 @UnsupportedAppUsage(maxTargetSdk = 29,
94 publicAlternatives = "Use {@code TetheringManager#getTetherableIfaces} as alternative")
95 String[] getTetherableIfaces();
96
97 @UnsupportedAppUsage(maxTargetSdk = 29,
98 publicAlternatives = "Use {@code TetheringManager#getTetheredIfaces} as alternative")
99 String[] getTetheredIfaces();
100
101 @UnsupportedAppUsage(maxTargetSdk = 29,
102 publicAlternatives = "Use {@code TetheringManager#getTetheringErroredIfaces} "
103 + "as Alternative")
104 String[] getTetheringErroredIfaces();
105
106 @UnsupportedAppUsage(maxTargetSdk = 29,
107 publicAlternatives = "Use {@code TetheringManager#getTetherableUsbRegexs} as alternative")
108 String[] getTetherableUsbRegexs();
109
110 @UnsupportedAppUsage(maxTargetSdk = 29,
111 publicAlternatives = "Use {@code TetheringManager#getTetherableWifiRegexs} as alternative")
112 String[] getTetherableWifiRegexs();
113
114 @UnsupportedAppUsage(maxTargetSdk = 28)
115 void reportInetCondition(int networkType, int percentage);
116
117 void reportNetworkConnectivity(in Network network, boolean hasConnectivity);
118
119 ProxyInfo getGlobalProxy();
120
121 void setGlobalProxy(in ProxyInfo p);
122
123 ProxyInfo getProxyForNetwork(in Network nework);
124
125 boolean prepareVpn(String oldPackage, String newPackage, int userId);
126
127 void setVpnPackageAuthorization(String packageName, int userId, int vpnType);
128
129 ParcelFileDescriptor establishVpn(in VpnConfig config);
130
131 boolean provisionVpnProfile(in VpnProfile profile, String packageName);
132
133 void deleteVpnProfile(String packageName);
134
135 void startVpnProfile(String packageName);
136
137 void stopVpnProfile(String packageName);
138
139 VpnConfig getVpnConfig(int userId);
140
141 @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
142 void startLegacyVpn(in VpnProfile profile);
143
144 LegacyVpnInfo getLegacyVpnInfo(int userId);
145
146 boolean updateLockdownVpn();
147 boolean isAlwaysOnVpnPackageSupported(int userId, String packageName);
148 boolean setAlwaysOnVpnPackage(int userId, String packageName, boolean lockdown,
149 in List<String> lockdownWhitelist);
150 String getAlwaysOnVpnPackage(int userId);
151 boolean isVpnLockdownEnabled(int userId);
152 List<String> getVpnLockdownWhitelist(int userId);
153 void setRequireVpnForUids(boolean requireVpn, in UidRange[] ranges);
154
155 void setProvisioningNotificationVisible(boolean visible, int networkType, in String action);
156
157 void setAirplaneMode(boolean enable);
158
159 boolean requestBandwidthUpdate(in Network network);
160
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +0900161 int registerNetworkProvider(in Messenger messenger, in String name);
162 void unregisterNetworkProvider(in Messenger messenger);
163
164 void declareNetworkRequestUnfulfillable(in NetworkRequest request);
165
166 Network registerNetworkAgent(in INetworkAgent na, in NetworkInfo ni, in LinkProperties lp,
167 in NetworkCapabilities nc, int score, in NetworkAgentConfig config,
168 in int factorySerialNumber);
169
170 NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities, int reqType,
171 in Messenger messenger, int timeoutSec, in IBinder binder, int legacy,
172 String callingPackageName, String callingAttributionTag);
173
174 NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities,
175 in PendingIntent operation, String callingPackageName, String callingAttributionTag);
176
177 void releasePendingNetworkRequest(in PendingIntent operation);
178
179 NetworkRequest listenForNetwork(in NetworkCapabilities networkCapabilities,
Roshan Piusa8a477b2020-12-17 14:53:09 -0800180 in Messenger messenger, in IBinder binder, String callingPackageName,
181 String callingAttributionTag);
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +0900182
183 void pendingListenForNetwork(in NetworkCapabilities networkCapabilities,
Roshan Piusa8a477b2020-12-17 14:53:09 -0800184 in PendingIntent operation, String callingPackageName,
185 String callingAttributionTag);
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +0900186
187 void releaseNetworkRequest(in NetworkRequest networkRequest);
188
189 void setAcceptUnvalidated(in Network network, boolean accept, boolean always);
190 void setAcceptPartialConnectivity(in Network network, boolean accept, boolean always);
191 void setAvoidUnvalidated(in Network network);
192 void startCaptivePortalApp(in Network network);
193 void startCaptivePortalAppInternal(in Network network, in Bundle appExtras);
194
195 boolean shouldAvoidBadWifi();
196 int getMultipathPreference(in Network Network);
197
198 NetworkRequest getDefaultRequest();
199
200 int getRestoreDefaultNetworkDelay(int networkType);
201
202 boolean addVpnAddress(String address, int prefixLength);
203 boolean removeVpnAddress(String address, int prefixLength);
204 boolean setUnderlyingNetworksForVpn(in Network[] networks);
205
206 void factoryReset();
207
208 void startNattKeepalive(in Network network, int intervalSeconds,
209 in ISocketKeepaliveCallback cb, String srcAddr, int srcPort, String dstAddr);
210
211 void startNattKeepaliveWithFd(in Network network, in ParcelFileDescriptor pfd, int resourceId,
212 int intervalSeconds, in ISocketKeepaliveCallback cb, String srcAddr,
213 String dstAddr);
214
215 void startTcpKeepalive(in Network network, in ParcelFileDescriptor pfd, int intervalSeconds,
216 in ISocketKeepaliveCallback cb);
217
218 void stopKeepalive(in Network network, int slot);
219
220 String getCaptivePortalServerUrl();
221
222 byte[] getNetworkWatchlistConfigHash();
223
224 int getConnectionOwnerUid(in ConnectionInfo connectionInfo);
225 boolean isCallerCurrentAlwaysOnVpnApp();
226 boolean isCallerCurrentAlwaysOnVpnLockdownApp();
227
228 void registerConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback,
229 in NetworkRequest request, String callingPackageName);
230 void unregisterConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback);
231
232 IBinder startOrGetTestNetworkService();
233
234 void simulateDataStall(int detectionMethod, long timestampMillis, in Network network,
235 in PersistableBundle extras);
236
237 void systemReady();
238
239 void registerNetworkActivityListener(in INetworkActivityListener l);
240
241 void unregisterNetworkActivityListener(in INetworkActivityListener l);
242
243 boolean isDefaultNetworkActive();
244
245 void registerQosSocketCallback(in QosSocketInfo socketInfo, in IQosCallback callback);
246 void unregisterQosCallback(in IQosCallback callback);
James Mattis452c6ff2021-01-01 14:13:35 -0800247
248 void setOemNetworkPreference(in OemNetworkPreferences preference);
Remi NGUYEN VANfbbccbc2021-01-15 18:08:24 +0900249}