INetworkManagementService.aidl revision 2c0929850ae495d54efb91a68e4bbd29a2e0ec95
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; 229a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkeyimport android.net.NetworkStats; 2359b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwaltimport android.net.RouteInfo; 249ab518ad793385f8405edf19363fe825fb64f5f8Irfan Sheriffimport android.net.wifi.WifiConfiguration; 25ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat 26873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat/** 27873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * @hide 28873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 29873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehatinterface INetworkManagementService 30873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat{ 31873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 32873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat ** GENERAL 33873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat **/ 34873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 35873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 364d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Register an observer to receive events 374d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat */ 384d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat void registerObserver(INetworkManagementEventObserver obs); 394d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat 404d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat /** 414d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Unregister an observer from receiving events. 424d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat */ 434d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat void unregisterObserver(INetworkManagementEventObserver obs); 444d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat 454d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat /** 46873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns a list of currently known network interfaces 47873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 48873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat String[] listInterfaces(); 49873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 50873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 51ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat * Retrieves the specified interface config 52ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat * 53ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat */ 54ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat InterfaceConfiguration getInterfaceConfig(String iface); 55ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat 56ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat /** 57ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat * Sets the configuration of the specified interface 58ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat */ 59ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat void setInterfaceConfig(String iface, in InterfaceConfiguration cfg); 60ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat 61ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat /** 62f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff * Clear all IP addresses on the specified interface 63f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff */ 64f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff void clearInterfaceAddresses(String iface); 65f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff 66f5600618df153d9c51388562ebf3524e3bdc8b7dIrfan Sheriff /** 677244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff * Set interface down 687244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff */ 697244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff void setInterfaceDown(String iface); 707244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff 717244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff /** 727244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff * Set interface up 737244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff */ 747244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff void setInterfaceUp(String iface); 757244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff 767244c977ecbc1f73e4cfd9d824fc2b68aa886139Irfan Sheriff /** 777329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff * Set interface IPv6 privacy extensions 787329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff */ 797329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable); 807329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff 817329361cdce711775542b112663bf71a6e0d5cefIrfan Sheriff /** 827960d9f888e31602e17b8856c77a3826bf8c841erepo sync * Disable IPv6 on an interface 837960d9f888e31602e17b8856c77a3826bf8c841erepo sync */ 847960d9f888e31602e17b8856c77a3826bf8c841erepo sync void disableIpv6(String iface); 857960d9f888e31602e17b8856c77a3826bf8c841erepo sync 867960d9f888e31602e17b8856c77a3826bf8c841erepo sync /** 877960d9f888e31602e17b8856c77a3826bf8c841erepo sync * Enable IPv6 on an interface 887960d9f888e31602e17b8856c77a3826bf8c841erepo sync */ 897960d9f888e31602e17b8856c77a3826bf8c841erepo sync void enableIpv6(String iface); 907960d9f888e31602e17b8856c77a3826bf8c841erepo sync 917960d9f888e31602e17b8856c77a3826bf8c841erepo sync /** 9259b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt * Retrieves the network routes currently configured on the specified 9359b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt * interface 9459b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt */ 9559b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt RouteInfo[] getRoutes(String iface); 9659b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt 9759b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt /** 9859b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt * Add the specified route to the interface. 9959b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt */ 10059b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt void addRoute(String iface, in RouteInfo route); 10159b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt 10259b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt /** 10359b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt * Remove the specified route from the interface. 10459b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt */ 10559b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt void removeRoute(String iface, in RouteInfo route); 10659b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt 10759b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt /** 1083b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt * Add the specified route to a secondary interface 1093b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt * This will go into a special route table to be accessed 1103b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt * via ip rules 1113b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt */ 1123b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt void addSecondaryRoute(String iface, in RouteInfo route); 1133b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt 1143b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt /** 1153b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt * Remove the specified secondary route. 1163b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt */ 1173b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt void removeSecondaryRoute(String iface, in RouteInfo route); 1183b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt 1193b28e9a3daede9eac44faeb736ab4c8386ddd089Robert Greenwalt /** 120873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Shuts down the service 121873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 122873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void shutdown(); 123873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 124873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 125873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat ** TETHERING RELATED 126873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat **/ 127873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 128873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 129873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns true if IP forwarding is enabled 130873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 131873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat boolean getIpForwardingEnabled(); 132873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 133873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 134873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Enables/Disables IP Forwarding 135873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 136873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void setIpForwardingEnabled(boolean enabled); 137873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 138873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 139873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Start tethering services with the specified dhcp server range 140bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt * arg is a set of start end pairs defining the ranges. 141873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 142bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt void startTethering(in String[] dhcpRanges); 143873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 144873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 145873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Stop currently running tethering services 146873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 147873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void stopTethering(); 148873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 149873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 150873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns true if tethering services are started 151873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 152873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat boolean isTetheringStarted(); 153873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 154873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 1550f42037eb7b5118015c2caca635538324ccf0ccffredc * Start bluetooth reverse tethering services 1560f42037eb7b5118015c2caca635538324ccf0ccffredc */ 1570f42037eb7b5118015c2caca635538324ccf0ccffredc void startReverseTethering(in String iface); 1580f42037eb7b5118015c2caca635538324ccf0ccffredc 1590f42037eb7b5118015c2caca635538324ccf0ccffredc /** 1600f42037eb7b5118015c2caca635538324ccf0ccffredc * Stop currently running bluetooth reserse tethering services 1610f42037eb7b5118015c2caca635538324ccf0ccffredc */ 1620f42037eb7b5118015c2caca635538324ccf0ccffredc void stopReverseTethering(); 1630f42037eb7b5118015c2caca635538324ccf0ccffredc 1640f42037eb7b5118015c2caca635538324ccf0ccffredc /** 165873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Tethers the specified interface 166873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 167873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void tetherInterface(String iface); 168873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 169873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 170873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Untethers the specified interface 171873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 172873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void untetherInterface(String iface); 173873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 174873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 175873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns a list of currently tethered interfaces 176873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 177873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat String[] listTetheredInterfaces(); 178873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 179873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 180873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Sets the list of DNS forwarders (in order of priority) 181873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 182873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void setDnsForwarders(in String[] dns); 183873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 184873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 185873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Returns the list of DNS fowarders (in order of priority) 186873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 187873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat String[] getDnsForwarders(); 188873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 189873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 190873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Enables Network Address Translation between two interfaces. 191873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * The address and netmask of the external interface is used for 192873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * the NAT'ed network. 193873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 194873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void enableNat(String internalInterface, String externalInterface); 195873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat 196873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat /** 197873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * Disables Network Address Translation between two interfaces. 198873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */ 199873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat void disableNat(String internalInterface, String externalInterface); 20072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 20172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 20272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat ** PPPD 20372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat **/ 20472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 20572759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 20672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * Returns the list of currently known TTY devices on the system 20772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat */ 20872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat String[] listTtys(); 20972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 21072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 21172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * Attaches a PPP server daemon to the specified TTY with the specified 21272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * local/remote addresses. 21372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat */ 214d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr, 215d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt String dns2Addr); 21672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 21772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat /** 21872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat * Detaches a PPP server daemon from the specified TTY. 21972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat */ 22072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat void detachPppd(String tty); 22172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat 222ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt /** 223cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff * Load firmware for operation in the given mode. Currently the three 224cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff * modes supported are "AP", "STA" and "P2P". 225cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff */ 226cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff void wifiFirmwareReload(String wlanIface, String mode); 227cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff 228cb30b22ff507a5a9a5d9c584f8b082f5e96c4d02Irfan Sheriff /** 2295321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff * Start Wifi Access Point 2305321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff */ 23190542758d4fef2e5ff8badaf3b40c2a227fbfc47Irfan Sheriff void startAccessPoint(in WifiConfiguration wifiConfig, String iface); 2325321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff 2335321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff /** 2345321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff * Stop Wifi Access Point 2355321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff */ 23690542758d4fef2e5ff8badaf3b40c2a227fbfc47Irfan Sheriff void stopAccessPoint(String iface); 2375321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff 238c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff /** 239c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff * Set Access Point config 240c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff */ 24190542758d4fef2e5ff8badaf3b40c2a227fbfc47Irfan Sheriff void setAccessPoint(in WifiConfiguration wifiConfig, String iface); 24291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 24391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 2449a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey ** DATA USAGE RELATED 2459a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey **/ 2469a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey 2479a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey /** 2489a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * Return global network statistics summarized at an interface level, 2499a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * without any UID-level granularity. 25091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 251e8914c36276710de50b347c1e6aecfa45d6a56cdJeff Sharkey NetworkStats getNetworkStatsSummaryDev(); 252e8914c36276710de50b347c1e6aecfa45d6a56cdJeff Sharkey NetworkStats getNetworkStatsSummaryXt(); 25391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 25491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 2559a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * Return detailed network statistics with UID-level granularity, 2569a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * including interface and tag details. 25791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 2589a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey NetworkStats getNetworkStatsDetail(); 25991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 26091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 261eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * Return detailed network statistics for the requested UID, 262eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey * including interface and tag details. 263eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey */ 264eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey NetworkStats getNetworkStatsUidDetail(int uid); 265eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey 266eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey /** 267cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey * Return summary of network statistics for the requested pairs of 268cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey * tethering interfaces. Even indexes are remote interface, and odd 269cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey * indexes are corresponding local interfaces. 270cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey */ 271cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey NetworkStats getNetworkStatsTethering(in String[] ifacePairs); 272cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey 273cdd02c5d76d3dd4e21b5bb922d7fcfb86efec85fJeff Sharkey /** 274b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey * Set quota for an interface. 27550fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma */ 27641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void setInterfaceQuota(String iface, long quotaBytes); 277b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey 278b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey /** 279b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey * Remove quota for an interface. 280b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey */ 281b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey void removeInterfaceQuota(String iface); 28250fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma 28350fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma /** 28441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey * Set alert for an interface; requires that iface already has quota. 28541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey */ 28641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void setInterfaceAlert(String iface, long alertBytes); 28741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 28841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey /** 28941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey * Remove alert for an interface. 29041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey */ 29141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void removeInterfaceAlert(String iface); 29241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 29341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey /** 29441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey * Set alert across all interfaces. 29541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey */ 29641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey void setGlobalAlert(long alertBytes); 29741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 29841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey /** 29950fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma * Control network activity of a UID over interfaces with a quota limit. 30050fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma */ 30150fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma void setUidNetworkRules(int uid, boolean rejectOnQuotaInterfaces); 30250fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma 30350fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma /** 30463d27a9233fed934340231f438493746084a681dJeff Sharkey * Return status of bandwidth control module. 30563d27a9233fed934340231f438493746084a681dJeff Sharkey */ 30663d27a9233fed934340231f438493746084a681dJeff Sharkey boolean isBandwidthControlEnabled(); 30763d27a9233fed934340231f438493746084a681dJeff Sharkey 30863d27a9233fed934340231f438493746084a681dJeff Sharkey /** 3099a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey * Configures bandwidth throttling on an interface. 31091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 311f0db6e1853e929ae3b65501c31ee57c4dfbc767cSan Mehat void setInterfaceThrottle(String iface, int rxKbps, int txKbps); 31291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 31391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 31491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat * Returns the currently configured RX throttle values 31591cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat * for the specified interface 31691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 31791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat int getInterfaceRxThrottle(String iface); 31891cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat 31991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat /** 32091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat * Returns the currently configured TX throttle values 32191cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat * for the specified interface 32291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat */ 32391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat int getInterfaceTxThrottle(String iface); 324be23fba286e6772f2eb37ef25f252d7a73ef9dceSan Mehat 3257475c0cea622f126af966c3b5b9741f547e83450Mattias Falk /** 3260412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Sets idletimer for an interface. 3270412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * 3280412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * This either initializes a new idletimer or increases its 3290412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * reference-counting if an idletimer already exists for given 3300412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * {@code iface}. 3310412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * 3320412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * {@code label} usually represents the network type of {@code iface}. 3330412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Caller should ensure that {@code label} for an {@code iface} remains the 3340412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * same for all calls to addIdleTimer. 3350412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * 3360412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Every {@code addIdleTimer} should be paired with a 3370412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * {@link removeIdleTimer} to cleanup when the network disconnects. 3380412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai */ 3390412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai void addIdleTimer(String iface, int timeout, String label); 3400412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai 3410412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai /** 3420412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai * Removes idletimer for an interface. 3430412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai */ 3440412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai void removeIdleTimer(String iface); 3450412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai 3460412423f06ec633203b96f68b51f0720c33a2473Haoyu Bai /** 3477475c0cea622f126af966c3b5b9741f547e83450Mattias Falk * Sets the name of the default interface in the DNS resolver. 3487475c0cea622f126af966c3b5b9741f547e83450Mattias Falk */ 3497475c0cea622f126af966c3b5b9741f547e83450Mattias Falk void setDefaultInterfaceForDns(String iface); 3507475c0cea622f126af966c3b5b9741f547e83450Mattias Falk 3517475c0cea622f126af966c3b5b9741f547e83450Mattias Falk /** 3527475c0cea622f126af966c3b5b9741f547e83450Mattias Falk * Bind name servers to an interface in the DNS resolver. 3537475c0cea622f126af966c3b5b9741f547e83450Mattias Falk */ 3547475c0cea622f126af966c3b5b9741f547e83450Mattias Falk void setDnsServersForInterface(String iface, in String[] servers); 3557475c0cea622f126af966c3b5b9741f547e83450Mattias Falk 3567475c0cea622f126af966c3b5b9741f547e83450Mattias Falk /** 357572b7048a6ed6cf6c5f6bc6c9d542dc377d601ffRobert Greenwalt * Flush the DNS cache associated with the default interface. 3587475c0cea622f126af966c3b5b9741f547e83450Mattias Falk */ 3597475c0cea622f126af966c3b5b9741f547e83450Mattias Falk void flushDefaultDnsCache(); 3607475c0cea622f126af966c3b5b9741f547e83450Mattias Falk 3617475c0cea622f126af966c3b5b9741f547e83450Mattias Falk /** 362572b7048a6ed6cf6c5f6bc6c9d542dc377d601ffRobert Greenwalt * Flush the DNS cache associated with the specified interface. 3637475c0cea622f126af966c3b5b9741f547e83450Mattias Falk */ 3647475c0cea622f126af966c3b5b9741f547e83450Mattias Falk void flushInterfaceDnsCache(String iface); 365c268f0b19efd0b6c6c89c21be0893787f3cc9cf7Jeff Sharkey 366c268f0b19efd0b6c6c89c21be0893787f3cc9cf7Jeff Sharkey void setFirewallEnabled(boolean enabled); 367c268f0b19efd0b6c6c89c21be0893787f3cc9cf7Jeff Sharkey boolean isFirewallEnabled(); 3682c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallInterfaceRule(String iface, boolean allow); 3692c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallEgressSourceRule(String addr, boolean allow); 3702c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallEgressDestRule(String addr, int port, boolean allow); 3712c0929850ae495d54efb91a68e4bbd29a2e0ec95Jeff Sharkey void setFirewallUidRule(int uid, boolean allow); 372873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat} 373