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