1 /**
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 
17 package android.net;
18 
19 import android.app.PendingIntent;
20 import android.net.ConnectionInfo;
21 import android.net.ConnectivityDiagnosticsManager;
22 import android.net.IConnectivityDiagnosticsCallback;
23 import android.net.INetworkAgent;
24 import android.net.IOnCompleteListener;
25 import android.net.INetworkActivityListener;
26 import android.net.INetworkOfferCallback;
27 import android.net.IQosCallback;
28 import android.net.ISocketKeepaliveCallback;
29 import android.net.LinkProperties;
30 import android.net.LocalNetworkConfig;
31 import android.net.Network;
32 import android.net.NetworkAgentConfig;
33 import android.net.NetworkCapabilities;
34 import android.net.NetworkInfo;
35 import android.net.NetworkRequest;
36 import android.net.NetworkScore;
37 import android.net.NetworkState;
38 import android.net.NetworkStateSnapshot;
39 import android.net.OemNetworkPreferences;
40 import android.net.ProfileNetworkPreference;
41 import android.net.ProxyInfo;
42 import android.net.UidRange;
43 import android.net.QosSocketInfo;
44 import android.os.Bundle;
45 import android.os.IBinder;
46 import android.os.Messenger;
47 import android.os.ParcelFileDescriptor;
48 import android.os.PersistableBundle;
49 import android.os.ResultReceiver;
50 import android.os.UserHandle;
51 
52 /**
53  * Interface that answers queries about, and allows changing, the
54  * state of network connectivity.
55  */
56 /** {@hide} */
57 interface IConnectivityManager
58 {
getActiveNetwork()59     Network getActiveNetwork();
getActiveNetworkForUid(int uid, boolean ignoreBlocked)60     Network getActiveNetworkForUid(int uid, boolean ignoreBlocked);
61     @UnsupportedAppUsage
getActiveNetworkInfo()62     NetworkInfo getActiveNetworkInfo();
getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked)63     NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked);
64     @UnsupportedAppUsage(maxTargetSdk = 28)
getNetworkInfo(int networkType)65     NetworkInfo getNetworkInfo(int networkType);
getNetworkInfoForUid(in Network network, int uid, boolean ignoreBlocked)66     NetworkInfo getNetworkInfoForUid(in Network network, int uid, boolean ignoreBlocked);
67     @UnsupportedAppUsage
getAllNetworkInfo()68     NetworkInfo[] getAllNetworkInfo();
getNetworkForType(int networkType)69     Network getNetworkForType(int networkType);
getAllNetworks()70     Network[] getAllNetworks();
getDefaultNetworkCapabilitiesForUser( int userId, String callingPackageName, String callingAttributionTag)71     NetworkCapabilities[] getDefaultNetworkCapabilitiesForUser(
72             int userId, String callingPackageName, String callingAttributionTag);
73 
isNetworkSupported(int networkType)74     boolean isNetworkSupported(int networkType);
75 
76     @UnsupportedAppUsage
getActiveLinkProperties()77     LinkProperties getActiveLinkProperties();
getLinkPropertiesForType(int networkType)78     LinkProperties getLinkPropertiesForType(int networkType);
getLinkProperties(in Network network)79     LinkProperties getLinkProperties(in Network network);
getRedactedLinkPropertiesForPackage(in LinkProperties lp, int uid, String packageName, String callingAttributionTag)80     LinkProperties getRedactedLinkPropertiesForPackage(in LinkProperties lp, int uid,
81             String packageName, String callingAttributionTag);
82 
getNetworkCapabilities(in Network network, String callingPackageName, String callingAttributionTag)83     NetworkCapabilities getNetworkCapabilities(in Network network, String callingPackageName,
84             String callingAttributionTag);
85 
getRedactedNetworkCapabilitiesForPackage(in NetworkCapabilities nc, int uid, String callingPackageName, String callingAttributionTag)86     NetworkCapabilities getRedactedNetworkCapabilitiesForPackage(in NetworkCapabilities nc, int uid,
87             String callingPackageName, String callingAttributionTag);
88 
89     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
getAllNetworkState()90     NetworkState[] getAllNetworkState();
91 
getAllNetworkStateSnapshots()92     List<NetworkStateSnapshot> getAllNetworkStateSnapshots();
93 
isActiveNetworkMetered()94     boolean isActiveNetworkMetered();
95 
requestRouteToHostAddress(int networkType, in byte[] hostAddress, String callingPackageName, String callingAttributionTag)96     boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress,
97             String callingPackageName, String callingAttributionTag);
98 
99     @UnsupportedAppUsage(maxTargetSdk = 29,
100             publicAlternatives = "Use {@code TetheringManager#getLastTetherError} as alternative")
getLastTetherError(String iface)101     int getLastTetherError(String iface);
102 
103     @UnsupportedAppUsage(maxTargetSdk = 29,
104             publicAlternatives = "Use {@code TetheringManager#getTetherableIfaces} as alternative")
getTetherableIfaces()105     String[] getTetherableIfaces();
106 
107     @UnsupportedAppUsage(maxTargetSdk = 29,
108             publicAlternatives = "Use {@code TetheringManager#getTetheredIfaces} as alternative")
getTetheredIfaces()109     String[] getTetheredIfaces();
110 
111     @UnsupportedAppUsage(maxTargetSdk = 29,
112             publicAlternatives = "Use {@code TetheringManager#getTetheringErroredIfaces} "
113             + "as Alternative")
getTetheringErroredIfaces()114     String[] getTetheringErroredIfaces();
115 
116     @UnsupportedAppUsage(maxTargetSdk = 29,
117             publicAlternatives = "Use {@code TetheringManager#getTetherableUsbRegexs} as alternative")
getTetherableUsbRegexs()118     String[] getTetherableUsbRegexs();
119 
120     @UnsupportedAppUsage(maxTargetSdk = 29,
121             publicAlternatives = "Use {@code TetheringManager#getTetherableWifiRegexs} as alternative")
getTetherableWifiRegexs()122     String[] getTetherableWifiRegexs();
123 
124     @UnsupportedAppUsage(maxTargetSdk = 28)
reportInetCondition(int networkType, int percentage)125     void reportInetCondition(int networkType, int percentage);
126 
reportNetworkConnectivity(in Network network, boolean hasConnectivity)127     void reportNetworkConnectivity(in Network network, boolean hasConnectivity);
128 
getGlobalProxy()129     ProxyInfo getGlobalProxy();
130 
setGlobalProxy(in ProxyInfo p)131     void setGlobalProxy(in ProxyInfo p);
132 
getProxyForNetwork(in Network nework)133     ProxyInfo getProxyForNetwork(in Network nework);
134 
setRequireVpnForUids(boolean requireVpn, in UidRange[] ranges)135     void setRequireVpnForUids(boolean requireVpn, in UidRange[] ranges);
setLegacyLockdownVpnEnabled(boolean enabled)136     void setLegacyLockdownVpnEnabled(boolean enabled);
137 
setProvisioningNotificationVisible(boolean visible, int networkType, in String action)138     void setProvisioningNotificationVisible(boolean visible, int networkType, in String action);
139 
setAirplaneMode(boolean enable)140     void setAirplaneMode(boolean enable);
141 
requestBandwidthUpdate(in Network network)142     boolean requestBandwidthUpdate(in Network network);
143 
registerNetworkProvider(in Messenger messenger, in String name)144     int registerNetworkProvider(in Messenger messenger, in String name);
unregisterNetworkProvider(in Messenger messenger)145     void unregisterNetworkProvider(in Messenger messenger);
146 
declareNetworkRequestUnfulfillable(in NetworkRequest request)147     void declareNetworkRequestUnfulfillable(in NetworkRequest request);
148 
registerNetworkAgent(in INetworkAgent na, in NetworkInfo ni, in LinkProperties lp, in NetworkCapabilities nc, in NetworkScore score, in LocalNetworkConfig localNetworkConfig, in NetworkAgentConfig config, in int factorySerialNumber)149     Network registerNetworkAgent(in INetworkAgent na, in NetworkInfo ni, in LinkProperties lp,
150             in NetworkCapabilities nc, in NetworkScore score,
151             in LocalNetworkConfig localNetworkConfig, in NetworkAgentConfig config,
152             in int factorySerialNumber);
153 
requestNetwork(int uid, in NetworkCapabilities networkCapabilities, int reqType, in Messenger messenger, int timeoutSec, in IBinder binder, int legacy, int callbackFlags, String callingPackageName, String callingAttributionTag, int declaredMethodsFlag)154     NetworkRequest requestNetwork(int uid, in NetworkCapabilities networkCapabilities, int reqType,
155             in Messenger messenger, int timeoutSec, in IBinder binder, int legacy,
156             int callbackFlags, String callingPackageName, String callingAttributionTag,
157             int declaredMethodsFlag);
158 
pendingRequestForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation, String callingPackageName, String callingAttributionTag)159     NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities,
160             in PendingIntent operation, String callingPackageName, String callingAttributionTag);
161 
releasePendingNetworkRequest(in PendingIntent operation)162     void releasePendingNetworkRequest(in PendingIntent operation);
163 
listenForNetwork(in NetworkCapabilities networkCapabilities, in Messenger messenger, in IBinder binder, int callbackFlags, String callingPackageName, String callingAttributionTag, int declaredMethodsFlag)164     NetworkRequest listenForNetwork(in NetworkCapabilities networkCapabilities,
165             in Messenger messenger, in IBinder binder, int callbackFlags, String callingPackageName,
166             String callingAttributionTag, int declaredMethodsFlag);
167 
pendingListenForNetwork(in NetworkCapabilities networkCapabilities, in PendingIntent operation, String callingPackageName, String callingAttributionTag)168     void pendingListenForNetwork(in NetworkCapabilities networkCapabilities,
169             in PendingIntent operation, String callingPackageName,
170             String callingAttributionTag);
171 
releaseNetworkRequest(in NetworkRequest networkRequest)172     void releaseNetworkRequest(in NetworkRequest networkRequest);
173 
setAcceptUnvalidated(in Network network, boolean accept, boolean always)174     void setAcceptUnvalidated(in Network network, boolean accept, boolean always);
setAcceptPartialConnectivity(in Network network, boolean accept, boolean always)175     void setAcceptPartialConnectivity(in Network network, boolean accept, boolean always);
setAvoidUnvalidated(in Network network)176     void setAvoidUnvalidated(in Network network);
startCaptivePortalApp(in Network network)177     void startCaptivePortalApp(in Network network);
startCaptivePortalAppInternal(in Network network, in Bundle appExtras)178     void startCaptivePortalAppInternal(in Network network, in Bundle appExtras);
179 
shouldAvoidBadWifi()180     boolean shouldAvoidBadWifi();
getMultipathPreference(in Network Network)181     int getMultipathPreference(in Network Network);
182 
getDefaultRequest()183     NetworkRequest getDefaultRequest();
184 
getRestoreDefaultNetworkDelay(int networkType)185     int getRestoreDefaultNetworkDelay(int networkType);
186 
factoryReset()187     void factoryReset();
188 
startNattKeepalive(in Network network, int intervalSeconds, in ISocketKeepaliveCallback cb, String srcAddr, int srcPort, String dstAddr)189     void startNattKeepalive(in Network network, int intervalSeconds,
190             in ISocketKeepaliveCallback cb, String srcAddr, int srcPort, String dstAddr);
191 
startNattKeepaliveWithFd(in Network network, in ParcelFileDescriptor pfd, int resourceId, int intervalSeconds, in ISocketKeepaliveCallback cb, String srcAddr, String dstAddr, boolean automaticOnOffKeepalives, in Network underpinnedNetwork)192     void startNattKeepaliveWithFd(in Network network, in ParcelFileDescriptor pfd, int resourceId,
193             int intervalSeconds, in ISocketKeepaliveCallback cb, String srcAddr,
194             String dstAddr, boolean automaticOnOffKeepalives, in Network underpinnedNetwork);
195 
startTcpKeepalive(in Network network, in ParcelFileDescriptor pfd, int intervalSeconds, in ISocketKeepaliveCallback cb)196     void startTcpKeepalive(in Network network, in ParcelFileDescriptor pfd, int intervalSeconds,
197             in ISocketKeepaliveCallback cb);
198 
stopKeepalive(in ISocketKeepaliveCallback cb)199     void stopKeepalive(in ISocketKeepaliveCallback cb);
200 
getSupportedKeepalives()201     int[] getSupportedKeepalives();
202 
getCaptivePortalServerUrl()203     String getCaptivePortalServerUrl();
204 
getNetworkWatchlistConfigHash()205     byte[] getNetworkWatchlistConfigHash();
206 
getConnectionOwnerUid(in ConnectionInfo connectionInfo)207     int getConnectionOwnerUid(in ConnectionInfo connectionInfo);
208 
registerConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback, in NetworkRequest request, String callingPackageName)209     void registerConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback,
210             in NetworkRequest request, String callingPackageName);
unregisterConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback)211     void unregisterConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback);
212 
startOrGetTestNetworkService()213     IBinder startOrGetTestNetworkService();
214 
simulateDataStall(int detectionMethod, long timestampMillis, in Network network, in PersistableBundle extras)215     void simulateDataStall(int detectionMethod, long timestampMillis, in Network network,
216                 in PersistableBundle extras);
217 
systemReady()218     void systemReady();
219 
registerNetworkActivityListener(in INetworkActivityListener l)220     void registerNetworkActivityListener(in INetworkActivityListener l);
221 
unregisterNetworkActivityListener(in INetworkActivityListener l)222     void unregisterNetworkActivityListener(in INetworkActivityListener l);
223 
isDefaultNetworkActive()224     boolean isDefaultNetworkActive();
225 
registerQosSocketCallback(in QosSocketInfo socketInfo, in IQosCallback callback)226     void registerQosSocketCallback(in QosSocketInfo socketInfo, in IQosCallback callback);
unregisterQosCallback(in IQosCallback callback)227     void unregisterQosCallback(in IQosCallback callback);
228 
setOemNetworkPreference(in OemNetworkPreferences preference, in IOnCompleteListener listener)229     void setOemNetworkPreference(in OemNetworkPreferences preference,
230             in IOnCompleteListener listener);
231 
setProfileNetworkPreferences(in UserHandle profile, in List<ProfileNetworkPreference> preferences, in IOnCompleteListener listener)232     void setProfileNetworkPreferences(in UserHandle profile,
233             in List<ProfileNetworkPreference>  preferences,
234             in IOnCompleteListener listener);
235 
getRestrictBackgroundStatusByCaller()236     int getRestrictBackgroundStatusByCaller();
237 
offerNetwork(int providerId, in NetworkScore score, in NetworkCapabilities caps, in INetworkOfferCallback callback)238     void offerNetwork(int providerId, in NetworkScore score,
239             in NetworkCapabilities caps, in INetworkOfferCallback callback);
unofferNetwork(in INetworkOfferCallback callback)240     void unofferNetwork(in INetworkOfferCallback callback);
241 
setTestAllowBadWifiUntil(long timeMs)242     void setTestAllowBadWifiUntil(long timeMs);
243 
setDataSaverEnabled(boolean enable)244     void setDataSaverEnabled(boolean enable);
245 
setUidFirewallRule(int chain, int uid, int rule)246     void setUidFirewallRule(int chain, int uid, int rule);
247 
getUidFirewallRule(int chain, int uid)248     int getUidFirewallRule(int chain, int uid);
249 
setFirewallChainEnabled(int chain, boolean enable)250     void setFirewallChainEnabled(int chain, boolean enable);
251 
getFirewallChainEnabled(int chain)252     boolean getFirewallChainEnabled(int chain);
253 
replaceFirewallChain(int chain, in int[] uids)254     void replaceFirewallChain(int chain, in int[] uids);
255 
getCompanionDeviceManagerProxyService()256     IBinder getCompanionDeviceManagerProxyService();
257 
setVpnNetworkPreference(String session, in UidRange[] ranges)258     void setVpnNetworkPreference(String session, in UidRange[] ranges);
259 
setTestLowTcpPollingTimerForKeepalive(long timeMs)260     void setTestLowTcpPollingTimerForKeepalive(long timeMs);
261 
getRoutingCoordinatorService()262     IBinder getRoutingCoordinatorService();
263 
getEnabledConnectivityManagerFeatures()264     long getEnabledConnectivityManagerFeatures();
265 
isConnectivityServiceFeatureEnabledForTesting(String featureFlag)266     boolean isConnectivityServiceFeatureEnabledForTesting(String featureFlag);
267 }
268