19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (c) 2008, The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
46fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * Licensed under the Apache License, Version 2.0 (the "License");
56fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * you may not use this file except in compliance with the License.
66fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
86fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang *     http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
106fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * Unless required by applicable law or agreed to in writing, software
116fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * distributed under the License is distributed on an "AS IS" BASIS,
126fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.net;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwaltimport android.app.PendingIntent;
206a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapndeimport android.net.LinkQualityInfo;
21d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwaltimport android.net.LinkProperties;
229258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwaltimport android.net.Network;
237b81602f3c18df8a4ca0342c514af8f7e394c0d7Robert Greenwaltimport android.net.NetworkCapabilities;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.NetworkInfo;
258cd33ed84e94036a5e1201485af7603dc6fb0d9bSreeram Ramachandranimport android.net.NetworkMisc;
26f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkeyimport android.net.NetworkQuotaInfo;
279258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwaltimport android.net.NetworkRequest;
28d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkeyimport android.net.NetworkState;
29207900c23b26d0df9ab28c709db4a1007d7d7904Jason Monkimport android.net.ProxyInfo;
3042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwaltimport android.os.IBinder;
31665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwaltimport android.os.Messenger;
32ff3bdca31f4cf2bd607519b276dd175763aa1784Chia-chi Yehimport android.os.ParcelFileDescriptor;
33ab9321d13de29cf314e8a1774b592d1f1d7e94d8Wink Savilleimport android.os.ResultReceiver;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
352e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yehimport com.android.internal.net.LegacyVpnInfo;
3604ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yehimport com.android.internal.net.VpnConfig;
3782f8521d386f3109147c477d04e5e90e5c715fa0Jeff Sharkeyimport com.android.internal.net.VpnProfile;
3804ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface that answers queries about, and allows changing, the
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state of network connectivity.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** {@hide} */
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IConnectivityManager
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    NetworkInfo getActiveNetworkInfo();
47c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey    NetworkInfo getActiveNetworkInfoForUid(int uid);
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    NetworkInfo getNetworkInfo(int networkType);
4973b6cbae0cf6ca71453c526895a735130e72c9c0Robert Greenwalt    NetworkInfo getNetworkInfoForNetwork(in Network network);
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    NetworkInfo[] getAllNetworkInfo();
51b57edc5ae999abd9c7310833f4f10bbacbc469d7Lorenzo Colitti    Network getNetworkForType(int networkType);
5273b6cbae0cf6ca71453c526895a735130e72c9c0Robert Greenwalt    Network[] getAllNetworks();
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
54948282b0e6cf5310f09db97a4ae939db7c1cef72Wink Saville    NetworkInfo getProvisioningOrActiveNetworkInfo();
55948282b0e6cf5310f09db97a4ae939db7c1cef72Wink Saville
569b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt    boolean isNetworkSupported(int networkType);
579b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt
58d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt    LinkProperties getActiveLinkProperties();
599258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    LinkProperties getLinkPropertiesForType(int networkType);
609258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    LinkProperties getLinkProperties(in Network network);
619258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
629258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    NetworkCapabilities getNetworkCapabilities(in Network network);
63d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt
64d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey    NetworkState[] getAllNetworkState();
65d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey
66f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey    NetworkQuotaInfo getActiveNetworkQuotaInfo();
679f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey    boolean isActiveNetworkMetered();
68f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey
6903666c705ddabe0e7c5869ab69c2ca8b964164e9Sreeram Ramachandran    boolean requestRouteToHostAddress(int networkType, in byte[] hostAddress);
70585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt
718e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey    /** Policy control over specific {@link NetworkStateTracker}. */
728e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey    void setPolicyDataEnable(int networkType, boolean enabled);
738e28b7d78232f6cf08739ca0d129cc7f9e650801Jeff Sharkey
745a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt    int tether(String iface);
75d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
765a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt    int untether(String iface);
775a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt
785a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt    int getLastTetherError(String iface);
79d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
802a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    boolean isTetheringSupported();
812a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
82d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    String[] getTetherableIfaces();
83d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
84d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    String[] getTetheredIfaces();
852a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
865a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt    String[] getTetheringErroredIfaces();
875a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt
889c7e2c2cb491268db0322ad78856faf0582e61d1Robert Greenwalt    String[] getTetheredDhcpRanges();
899c7e2c2cb491268db0322ad78856faf0582e61d1Robert Greenwalt
902a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    String[] getTetherableUsbRegexs();
912a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
922a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    String[] getTetherableWifiRegexs();
9314f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt
946fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang    String[] getTetherableBluetoothRegexs();
956fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang
966c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood    int setUsbTethering(boolean enable);
976c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood
98d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt    void reportInetCondition(int networkType, int percentage);
99434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
1009258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    void reportBadNetwork(in Network network);
1019258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
102207900c23b26d0df9ab28c709db4a1007d7d7904Jason Monk    ProxyInfo getGlobalProxy();
103434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
104207900c23b26d0df9ab28c709db4a1007d7d7904Jason Monk    void setGlobalProxy(in ProxyInfo p);
105434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
106207900c23b26d0df9ab28c709db4a1007d7d7904Jason Monk    ProxyInfo getProxy();
107d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt
108d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt    void setDataDependency(int networkType, boolean met);
109ff3bdca31f4cf2bd607519b276dd175763aa1784Chia-chi Yeh
110100155a310fbb5028fc48e359bdfb7c4d3531843Chia-chi Yeh    boolean prepareVpn(String oldPackage, String newPackage);
111ff3bdca31f4cf2bd607519b276dd175763aa1784Chia-chi Yeh
11205542603dd4f1e0ea47a3dca01de3999a9a329a9Jeff Davidson    void setVpnPackageAuthorization(boolean authorized);
11305542603dd4f1e0ea47a3dca01de3999a9a329a9Jeff Davidson
11404ba25c418bc4538e9dc0f047cfb9608d358f679Chia-chi Yeh    ParcelFileDescriptor establishVpn(in VpnConfig config);
11577fd485c2ff780d1e6ef0ba1e3e811370ecbc528Chia-chi Yeh
116bf6ff2c025405a3af496fe558dfc4468a9b45cc8Chad Brubaker    VpnConfig getVpnConfig();
117bf6ff2c025405a3af496fe558dfc4468a9b45cc8Chad Brubaker
11882f8521d386f3109147c477d04e5e90e5c715fa0Jeff Sharkey    void startLegacyVpn(in VpnProfile profile);
1192e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh
1202e46764a707bd14cad22bc179669eeecb2d7c647Chia-chi Yeh    LegacyVpnInfo getLegacyVpnInfo();
12169ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey
12269ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey    boolean updateLockdownVpn();
123da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff
124d747cbc898ef44e59c3fbf74a8327b6a12aad397Wink Saville    void captivePortalCheckCompleted(in NetworkInfo info, boolean isCaptivePortal);
125d747cbc898ef44e59c3fbf74a8327b6a12aad397Wink Saville
126665e1aed5e99af1e66af56c0d73e32fd86f57273Robert Greenwalt    void supplyMessenger(int networkType, in Messenger messenger);
1271b0ca9dace3fb3b84f8a87e539c0179e6093b423Robert Greenwalt
1281b0ca9dace3fb3b84f8a87e539c0179e6093b423Robert Greenwalt    int findConnectionTypeForIface(in String iface);
129ab9321d13de29cf314e8a1774b592d1f1d7e94d8Wink Saville
130948282b0e6cf5310f09db97a4ae939db7c1cef72Wink Saville    int checkMobileProvisioning(int suggestedTimeOutMs);
131e182bfe398a132236f723a76522bacd4d6d4c0a4Robert Greenwalt
132e182bfe398a132236f723a76522bacd4d6d4c0a4Robert Greenwalt    String getMobileProvisioningUrl();
13342d4f08db2c15e1829c1fc5d1942cf029ab0895bWink Saville
13442d4f08db2c15e1829c1fc5d1942cf029ab0895bWink Saville    String getMobileRedirectedProvisioningUrl();
1351f12cb52a494a3eaefc62d03a8d2fdf47a5535e9Vinit Deshapnde
1366a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    LinkQualityInfo getLinkQualityInfo(int networkType);
1371f12cb52a494a3eaefc62d03a8d2fdf47a5535e9Vinit Deshapnde
1386a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    LinkQualityInfo getActiveLinkQualityInfo();
1391f12cb52a494a3eaefc62d03a8d2fdf47a5535e9Vinit Deshapnde
1406a2d32597a3f158f4ff5b07ad61c7d892d08f3bfVinit Deshapnde    LinkQualityInfo[] getAllLinkQualityInfo();
1411f12cb52a494a3eaefc62d03a8d2fdf47a5535e9Vinit Deshapnde
14289e0f0937a70d73b5ed188c9337b4d33860e5573Paul Jensen    void setProvisioningNotificationVisible(boolean visible, int networkType, in String action);
1435cd1a0e8d77972ad6cee2625a7e21082932042c2Yuhao Zheng
1445cd1a0e8d77972ad6cee2625a7e21082932042c2Yuhao Zheng    void setAirplaneMode(boolean enable);
145e049c23980409be6576da3d30538a6cdc43854ddRobert Greenwalt
146a67be03f9e2734c0a6c03af20e17f963daaed257Robert Greenwalt    void registerNetworkFactory(in Messenger messenger, in String name);
147a67be03f9e2734c0a6c03af20e17f963daaed257Robert Greenwalt
148a67be03f9e2734c0a6c03af20e17f963daaed257Robert Greenwalt    void unregisterNetworkFactory(in Messenger messenger);
1497b81602f3c18df8a4ca0342c514af8f7e394c0d7Robert Greenwalt
1509258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    void registerNetworkAgent(in Messenger messenger, in NetworkInfo ni, in LinkProperties lp,
1518cd33ed84e94036a5e1201485af7603dc6fb0d9bSreeram Ramachandran            in NetworkCapabilities nc, int score, in NetworkMisc misc);
1529258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
1539258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities,
154b90b20b5d57809da5c91bac9ff45c2ac323d9637Robert Greenwalt            in Messenger messenger, int timeoutSec, in IBinder binder, int legacy);
1559258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
1569258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities,
1579258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt            in PendingIntent operation);
1589258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
1599258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    NetworkRequest listenForNetwork(in NetworkCapabilities networkCapabilities,
1609258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt            in Messenger messenger, in IBinder binder);
1619258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
1629258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    void pendingListenForNetwork(in NetworkCapabilities networkCapabilities,
1639258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt            in PendingIntent operation);
1649258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt
1659258c64bef1a01fe89bc7c1fa402c44c0e6a1255Robert Greenwalt    void releaseNetworkRequest(in NetworkRequest networkRequest);
16671bf33a02f49444fbfa35b267c70592f3b07a07dRobert Greenwalt
16771bf33a02f49444fbfa35b267c70592f3b07a07dRobert Greenwalt    int getRestoreDefaultNetworkDelay(int networkType);
168f4e0c0cb8ef22fdb20ae74b444c9f4b7d15ded8bSreeram Ramachandran
169f4e0c0cb8ef22fdb20ae74b444c9f4b7d15ded8bSreeram Ramachandran    boolean addVpnAddress(String address, int prefixLength);
170f4e0c0cb8ef22fdb20ae74b444c9f4b7d15ded8bSreeram Ramachandran    boolean removeVpnAddress(String address, int prefixLength);
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
172