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