1873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat/* //device/java/android/android/os/INetworkManagementService.aidl 2873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** 3873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** Copyright 2007, The Android Open Source Project 4873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** 5873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** Licensed under the Apache License, Version 2.0 (the "License"); 6873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** you may not use this file except in compliance with the License. 7873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** You may obtain a copy of the License at 8873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** 9873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** http://www.apache.org/licenses/LICENSE-2.0 10873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** 11873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** Unless required by applicable law or agreed to in writing, software 12873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** distributed under the License is distributed on an "AS IS" BASIS, 13873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** See the License for the specific language governing permissions and 15873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat** limitations under the License. 16873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat*/ 17873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 18873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehatpackage android.os; 19873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 20ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehatimport android.net.InterfaceConfiguration; 214d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehatimport android.net.INetworkManagementEventObserver; 22b57edc5ae999abd9c7310833f4f10bbacbc469d7Lorenzo Colittiimport android.net.Network; 239a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkeyimport android.net.NetworkStats; 2459b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwaltimport android.net.RouteInfo; 256bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensenimport android.net.UidRange; 269ab518ad793385f8405edf19363fe825fb64f5f8Irfan Sheriffimport android.net.wifi.WifiConfiguration; 2777b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackbornimport android.os.INetworkActivityListener; 28ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat 29873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat/** 30873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * @hide 31873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 32873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehatinterface INetworkManagementService 33873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat{ 34873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 35873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat ** GENERAL 36873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat **/ 37873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 38873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 394d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Register an observer to receive events 404d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat */ 414d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat void registerObserver(INetworkManagementEventObserver obs); 424d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat 434d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat /** 444d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Unregister an observer from receiving events. 454d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat */ 464d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat void unregisterObserver(INetworkManagementEventObserver obs); 474d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat 484d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat /** 49873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns a list of currently known network interfaces 50873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 51873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat String[] listInterfaces(); 52873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 53873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 54ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat * Retrieves the specified interface config 55ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat * 56ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat */ 57ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat InterfaceConfiguration getInterfaceConfig(String iface); 58ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat 59ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat /** 60ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat * Sets the configuration of the specified interface 61ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat */ 62ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat void setInterfaceConfig(String iface, in InterfaceConfiguration cfg); 63ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat 64ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat /** 65f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff * Clear all IP addresses on the specified interface 66f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff */ 67f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff void clearInterfaceAddresses(String iface); 68f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff 69f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff /** 707244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff * Set interface down 717244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff */ 727244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff void setInterfaceDown(String iface); 737244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff 747244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff /** 757244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff * Set interface up 767244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff */ 777244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff void setInterfaceUp(String iface); 787244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff 797244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff /** 807329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff * Set interface IPv6 privacy extensions 817329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff */ 827329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable); 837329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff 847329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff /** 857960d9f888e31602e17b8856c77a3826bf8c841erepo sync * Disable IPv6 on an interface 867960d9f888e31602e17b8856c77a3826bf8c841erepo sync */ 877960d9f888e31602e17b8856c77a3826bf8c841erepo sync void disableIpv6(String iface); 887960d9f888e31602e17b8856c77a3826bf8c841erepo sync 897960d9f888e31602e17b8856c77a3826bf8c841erepo sync /** 907960d9f888e31602e17b8856c77a3826bf8c841erepo sync * Enable IPv6 on an interface 917960d9f888e31602e17b8856c77a3826bf8c841erepo sync */ 927960d9f888e31602e17b8856c77a3826bf8c841erepo sync void enableIpv6(String iface); 937960d9f888e31602e17b8856c77a3826bf8c841erepo sync 947960d9f888e31602e17b8856c77a3826bf8c841erepo sync /** 95e21a26b3ba78b0238f4ed4a09b43319a2320fbaaLorenzo Colitti * Enables or enables IPv6 ND offload. 96e21a26b3ba78b0238f4ed4a09b43319a2320fbaaLorenzo Colitti */ 97e21a26b3ba78b0238f4ed4a09b43319a2320fbaaLorenzo Colitti void setInterfaceIpv6NdOffload(String iface, boolean enable); 98e21a26b3ba78b0238f4ed4a09b43319a2320fbaaLorenzo Colitti 99e21a26b3ba78b0238f4ed4a09b43319a2320fbaaLorenzo Colitti /** 10059b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt * Add the specified route to the interface. 10159b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt */ 102b2829fa165124264c7ec06a6e23b08a1d97b99e5Sreeram Ramachandran void addRoute(int netId, in RouteInfo route); 10359b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt 10459b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt /** 10559b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt * Remove the specified route from the interface. 10659b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt */ 107b2829fa165124264c7ec06a6e23b08a1d97b99e5Sreeram Ramachandran void removeRoute(int netId, in RouteInfo route); 1083b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt 1093b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt /** 1109d9b74a900696191048aa97cc3c854072640428bsy.yun * Set the specified MTU size 1119d9b74a900696191048aa97cc3c854072640428bsy.yun */ 1129d9b74a900696191048aa97cc3c854072640428bsy.yun void setMtu(String iface, int mtu); 1139d9b74a900696191048aa97cc3c854072640428bsy.yun 1149d9b74a900696191048aa97cc3c854072640428bsy.yun /** 115873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Shuts down the service 116873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 117873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void shutdown(); 118873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 119873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 120873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat ** TETHERING RELATED 121873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat **/ 122873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 123873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 124873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns true if IP forwarding is enabled 125873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 126873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat boolean getIpForwardingEnabled(); 127873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 128873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 129873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Enables/Disables IP Forwarding 130873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 131873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void setIpForwardingEnabled(boolean enabled); 132873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 133873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 134873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Start tethering services with the specified dhcp server range 135bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt * arg is a set of start end pairs defining the ranges. 136873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 137bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt void startTethering(in String[] dhcpRanges); 138873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 139873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 140873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Stop currently running tethering services 141873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 142873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void stopTethering(); 143873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 144873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 145873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns true if tethering services are started 146873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 147873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat boolean isTetheringStarted(); 148873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 149873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 150873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Tethers the specified interface 151873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 152873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void tetherInterface(String iface); 153873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 154873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 155873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Untethers the specified interface 156873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 157873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void untetherInterface(String iface); 158873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 159873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 160873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns a list of currently tethered interfaces 161873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 162873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat String[] listTetheredInterfaces(); 163873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 164873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 165873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Sets the list of DNS forwarders (in order of priority) 166873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 167b57edc5ae999abd9c7310833f4f10bbacbc469d7Lorenzo Colitti void setDnsForwarders(in Network network, in String[] dns); 168873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 169873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 170b57edc5ae999abd9c7310833f4f10bbacbc469d7Lorenzo Colitti * Returns the list of DNS forwarders (in order of priority) 171873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 172873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat String[] getDnsForwarders(); 173873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 174873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 17535e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti * Enables unidirectional packet forwarding from {@code fromIface} to 17635e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti * {@code toIface}. 17735e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti */ 17835e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti void startInterfaceForwarding(String fromIface, String toIface); 17935e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti 18035e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti /** 18135e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti * Disables unidirectional packet forwarding from {@code fromIface} to 18235e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti * {@code toIface}. 18335e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti */ 18435e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti void stopInterfaceForwarding(String fromIface, String toIface); 18535e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti 18635e36db1d726f5741e7d8d83d2556e1417642be9Lorenzo Colitti /** 187873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Enables Network Address Translation between two interfaces. 188873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * The address and netmask of the external interface is used for 189873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * the NAT'ed network. 190873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 191873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void enableNat(String internalInterface, String externalInterface); 192873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 193873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 194873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Disables Network Address Translation between two interfaces. 195873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 196873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void disableNat(String internalInterface, String externalInterface); 19772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 19872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 19972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat ** PPPD 20072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat **/ 20172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 20272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 20372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * Returns the list of currently known TTY devices on the system 20472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat */ 20572759df749bb8557269db86c2e3b2a8a0343cc26San Mehat String[] listTtys(); 20672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 20772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 20872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * Attaches a PPP server daemon to the specified TTY with the specified 20972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * local/remote addresses. 21072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat */ 211d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr, 212d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt String dns2Addr); 21372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 21472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 21572759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * Detaches a PPP server daemon from the specified TTY. 21672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat */ 21772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat void detachPppd(String tty); 21872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 219ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt /** 220cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff * Load firmware for operation in the given mode. Currently the three 221cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff * modes supported are "AP", "STA" and "P2P". 222cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff */ 223cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff void wifiFirmwareReload(String wlanIface, String mode); 224cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff 225cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff /** 2265321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff * Start Wifi Access Point 2275321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff */ 22890542758d4fef2e5ff8badaf3b40c2a227fbfc47Irfan Sheriff void startAccessPoint(in WifiConfiguration wifiConfig, String iface); 2295321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff 2305321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff /** 2315321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff * Stop Wifi Access Point 2325321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff */ 23390542758d4fef2e5ff8badaf3b40c2a227fbfc47Irfan Sheriff void stopAccessPoint(String iface); 2345321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff 235c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff /** 236c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff * Set Access Point config 237c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff */ 23890542758d4fef2e5ff8badaf3b40c2a227fbfc47Irfan Sheriff void setAccessPoint(in WifiConfiguration wifiConfig, String iface); 23991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 24091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 2419a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey ** DATA USAGE RELATED 2429a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey **/ 2439a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey 2449a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey /** 2459a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * Return global network statistics summarized at an interface level, 2469a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * without any UID-level granularity. 24791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 248e8914c36276710de50b347c1e6aecfa45d6a56cdJeff Sharkey NetworkStats getNetworkStatsSummaryDev(); 249e8914c36276710de50b347c1e6aecfa45d6a56cdJeff Sharkey NetworkStats getNetworkStatsSummaryXt(); 25091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 25191cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 2529a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * Return detailed network statistics with UID-level granularity, 2539a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * including interface and tag details. 25491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 2559a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey NetworkStats getNetworkStatsDetail(); 25691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 25791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 258eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * Return detailed network statistics for the requested UID, 259eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * including interface and tag details. 260eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey */ 261eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey NetworkStats getNetworkStatsUidDetail(int uid); 262eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey 263eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey /** 264e4984bea95a07dea0ef0259fefa1e52f0bbb1533Jeff Sharkey * Return summary of network statistics all tethering interfaces. 265cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey */ 266e4984bea95a07dea0ef0259fefa1e52f0bbb1533Jeff Sharkey NetworkStats getNetworkStatsTethering(); 267cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey 268cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey /** 269b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey * Set quota for an interface. 27050fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma */ 27141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void setInterfaceQuota(String iface, long quotaBytes); 272b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey 273b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey /** 274b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey * Remove quota for an interface. 275b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey */ 276b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey void removeInterfaceQuota(String iface); 27750fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma 27850fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma /** 27941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey * Set alert for an interface; requires that iface already has quota. 28041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey */ 28141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void setInterfaceAlert(String iface, long alertBytes); 28241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 28341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey /** 28441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey * Remove alert for an interface. 28541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey */ 28641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void removeInterfaceAlert(String iface); 28741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 28841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey /** 28941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey * Set alert across all interfaces. 29041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey */ 29141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void setGlobalAlert(long alertBytes); 29241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 29341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey /** 29450fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma * Control network activity of a UID over interfaces with a quota limit. 29550fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma */ 29665be3025fd07d53137f5434794d1d1b3a0933aabFelipe Leme void setUidMeteredNetworkBlacklist(int uid, boolean enable); 29765be3025fd07d53137f5434794d1d1b3a0933aabFelipe Leme void setUidMeteredNetworkWhitelist(int uid, boolean enable); 29865be3025fd07d53137f5434794d1d1b3a0933aabFelipe Leme boolean setDataSaverModeEnabled(boolean enable); 29950fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma 300605eb79c9519307147fc1795d0eb155638a7f542Jeff Sharkey void setUidCleartextNetworkPolicy(int uid, int policy); 301605eb79c9519307147fc1795d0eb155638a7f542Jeff Sharkey 30250fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma /** 30363d27a9233fed934340231f438493746084a681dJeff Sharkey * Return status of bandwidth control module. 30463d27a9233fed934340231f438493746084a681dJeff Sharkey */ 30563d27a9233fed934340231f438493746084a681dJeff Sharkey boolean isBandwidthControlEnabled(); 30663d27a9233fed934340231f438493746084a681dJeff Sharkey 30763d27a9233fed934340231f438493746084a681dJeff Sharkey /** 3080412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Sets idletimer for an interface. 3090412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * 3100412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * This either initializes a new idletimer or increases its 3110412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * reference-counting if an idletimer already exists for given 3120412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * {@code iface}. 3130412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * 31477b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn * {@code type} is the type of the interface, such as TYPE_MOBILE. 3150412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * 3160412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Every {@code addIdleTimer} should be paired with a 3170412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * {@link removeIdleTimer} to cleanup when the network disconnects. 3180412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai */ 31977b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn void addIdleTimer(String iface, int timeout, int type); 3200412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai 3210412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai /** 3220412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Removes idletimer for an interface. 3230412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai */ 3240412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai void removeIdleTimer(String iface); 3250412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai 3260412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai /** 3278e48e67827dd2da40e0b28977a9afca0f43de73dPierre Imai * Configure name servers, search paths, and resolver parameters for the given network. 3288e48e67827dd2da40e0b28977a9afca0f43de73dPierre Imai */ 3298e48e67827dd2da40e0b28977a9afca0f43de73dPierre Imai void setDnsConfigurationForNetwork(int netId, in String[] servers, String domains); 3308e48e67827dd2da40e0b28977a9afca0f43de73dPierre Imai 3318e48e67827dd2da40e0b28977a9afca0f43de73dPierre Imai /** 33213e817df516a803fbedeacca2c802a9fc1c1370fPaul Jensen * Bind name servers to a network in the DNS resolver. 3337475c0cea622f126af966c3b5b9741f547e83450Mattias Falk */ 33413e817df516a803fbedeacca2c802a9fc1c1370fPaul Jensen void setDnsServersForNetwork(int netId, in String[] servers, String domains); 3357475c0cea622f126af966c3b5b9741f547e83450Mattias Falk 336c268f0b19efd0b6c6c89c21be0893787f3cc9cf7Jeff Sharkey void setFirewallEnabled(boolean enabled); 337c268f0b19efd0b6c6c89c21be0893787f3cc9cf7Jeff Sharkey boolean isFirewallEnabled(); 3382c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallInterfaceRule(String iface, boolean allow); 3392c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallEgressSourceRule(String addr, boolean allow); 3402c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallEgressDestRule(String addr, int port, boolean allow); 341b41c9f7f39939cee8d226eb5e506c3f0573f44f5Xiaohui Chen void setFirewallUidRule(int chain, int uid, int rule); 342b41c9f7f39939cee8d226eb5e506c3f0573f44f5Xiaohui Chen void setFirewallUidRules(int chain, in int[] uids, in int[] rules); 343b41c9f7f39939cee8d226eb5e506c3f0573f44f5Xiaohui Chen void setFirewallChainEnabled(int chain, boolean enable); 3448b47b3601f82f299bb8c135af0639b72b67230e6Mattias Falk 3458b47b3601f82f299bb8c135af0639b72b67230e6Mattias Falk /** 3466bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen * Set all packets from users in ranges to go through VPN specified by netId. 3473277620a69b6b9f27126f0b2651ea4293731cd09Chad Brubaker */ 3486bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen void addVpnUidRanges(int netId, in UidRange[] ranges); 3493277620a69b6b9f27126f0b2651ea4293731cd09Chad Brubaker 3503277620a69b6b9f27126f0b2651ea4293731cd09Chad Brubaker /** 3516bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen * Clears the special VPN rules for users in ranges and VPN specified by netId. 3523277620a69b6b9f27126f0b2651ea4293731cd09Chad Brubaker */ 3536bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen void removeVpnUidRanges(int netId, in UidRange[] ranges); 3543277620a69b6b9f27126f0b2651ea4293731cd09Chad Brubaker 3553277620a69b6b9f27126f0b2651ea4293731cd09Chad Brubaker /** 356954394653dad05838235f48244a4320893e0f0cfLorenzo Colitti * Start the clatd (464xlat) service on the given interface. 35779751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti */ 35879751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti void startClatd(String interfaceName); 35979751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti 36079751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti /** 361954394653dad05838235f48244a4320893e0f0cfLorenzo Colitti * Stop the clatd (464xlat) service on the given interface. 36279751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti */ 363954394653dad05838235f48244a4320893e0f0cfLorenzo Colitti void stopClatd(String interfaceName); 36479751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti 36579751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti /** 366954394653dad05838235f48244a4320893e0f0cfLorenzo Colitti * Determine whether the clatd (464xlat) service has been started on the given interface. 36779751848d1c3a5139eb5ccd6ddecaf84c2a09783Lorenzo Colitti */ 368954394653dad05838235f48244a4320893e0f0cfLorenzo Colitti boolean isClatdStarted(String interfaceName); 36977b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn 37077b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn /** 37177b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn * Start listening for mobile activity state changes. 37277b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn */ 37377b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn void registerNetworkActivityListener(INetworkActivityListener listener); 37477b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn 37577b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn /** 37677b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn * Stop listening for mobile activity state changes. 37777b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn */ 37877b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn void unregisterNetworkActivityListener(INetworkActivityListener listener); 37977b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn 38077b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn /** 38177b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn * Check whether the mobile radio is currently active. 38277b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn */ 38377b987f1a1bb6028a871de01065b94c4cfff0b5cDianne Hackborn boolean isNetworkActive(); 3849ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt 3859ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt /** 3866bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen * Setup a new physical network. 387487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen * @param permission null if no permissions required to access this network. PERMISSION_NETWORK 388487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen * or PERMISSION_SYSTEM to set respective permission. 3896bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen */ 390487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen void createPhysicalNetwork(int netId, String permission); 3916bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen 3926bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen /** 3936bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen * Setup a new VPN. 3949ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt */ 3958cd33ed84e94036a5e1201485af7603dc6fb0d9bSreeram Ramachandran void createVirtualNetwork(int netId, boolean hasDNS, boolean secure); 3969ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt 3979ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt /** 398992f25257938ecc0378514f21c6e6e6375272976Paul Jensen * Remove a network. 3999ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt */ 4009ba9c58e4a249456794fbfb9989f27bd846d067eRobert Greenwalt void removeNetwork(int netId); 401568891d9282383747c418a59ee714281726f390aRobert Greenwalt 402992f25257938ecc0378514f21c6e6e6375272976Paul Jensen /** 403992f25257938ecc0378514f21c6e6e6375272976Paul Jensen * Add an interface to a network. 404992f25257938ecc0378514f21c6e6e6375272976Paul Jensen */ 405992f25257938ecc0378514f21c6e6e6375272976Paul Jensen void addInterfaceToNetwork(String iface, int netId); 406992f25257938ecc0378514f21c6e6e6375272976Paul Jensen 407992f25257938ecc0378514f21c6e6e6375272976Paul Jensen /** 408992f25257938ecc0378514f21c6e6e6375272976Paul Jensen * Remove an Interface from a network. 409992f25257938ecc0378514f21c6e6e6375272976Paul Jensen */ 410992f25257938ecc0378514f21c6e6e6375272976Paul Jensen void removeInterfaceFromNetwork(String iface, int netId); 411992f25257938ecc0378514f21c6e6e6375272976Paul Jensen 412913c895216c0cb248ed0ce910e69dd84b285c064Robert Greenwalt void addLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid); 413568891d9282383747c418a59ee714281726f390aRobert Greenwalt 414f047f2a8f49cd06d9cb94238861f4acce937d87bSreeram Ramachandran void setDefaultNetId(int netId); 415568891d9282383747c418a59ee714281726f390aRobert Greenwalt void clearDefaultNetId(); 416568891d9282383747c418a59ee714281726f390aRobert Greenwalt 417487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen /** 418487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen * Set permission for a network. 419487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen * @param permission null to clear permissions. PERMISSION_NETWORK or PERMISSION_SYSTEM to set 420487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen * permission. 421487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen */ 422487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen void setNetworkPermission(int netId, String permission); 423487ffe7d3d84bf65212158f7098e8a84b5b55e09Paul Jensen 424e4a05afe85f15472325db9c535ef81f409fb6070Sreeram Ramachandran void setPermission(String permission, in int[] uids); 425568891d9282383747c418a59ee714281726f390aRobert Greenwalt void clearPermission(in int[] uids); 4266bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen 4276bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen /** 4286bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen * Allow UID to call protect(). 4296bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen */ 4306bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen void allowProtect(int uid); 4316bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen 4326bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen /** 4336bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen * Deny UID from calling protect(). 4346bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen */ 4356bc2c2c34f2b23eae79ad733c97a691734055c4fPaul Jensen void denyProtect(int uid); 436a77760d74ad544bbd4f6310fd28b395f24c5467dSreeram Ramachandran 437a77760d74ad544bbd4f6310fd28b395f24c5467dSreeram Ramachandran void addInterfaceToLocalNetwork(String iface, in List<RouteInfo> routes); 438a77760d74ad544bbd4f6310fd28b395f24c5467dSreeram Ramachandran void removeInterfaceFromLocalNetwork(String iface); 43917e6183b85ba3038acb935aaa01415058b2e6dddRobin Lee 44017e6183b85ba3038acb935aaa01415058b2e6dddRobin Lee void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges); 441873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat} 442