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