INetworkManagementService.aidl revision 41ff7ec82422a5b6d00892afdb3232bc0e53d851
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    /**
6759b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     * Retrieves the network routes currently configured on the specified
6859b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     * interface
6959b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     */
7059b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt    RouteInfo[] getRoutes(String iface);
7159b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt
7259b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt    /**
7359b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     * Add the specified route to the interface.
7459b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     */
7559b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt    void addRoute(String iface, in RouteInfo route);
7659b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt
7759b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt    /**
7859b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     * Remove the specified route from the interface.
7959b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt     */
8059b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt    void removeRoute(String iface, in RouteInfo route);
8159b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt
8259b1a4ede7032c1b4d897e13dd4ede09b5e14743Robert Greenwalt    /**
83873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Shuts down the service
84873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
85873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void shutdown();
86873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
87873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
88873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     ** TETHERING RELATED
89873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     **/
90873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
91873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
92873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns true if IP forwarding is enabled
93873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
94873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    boolean getIpForwardingEnabled();
95873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
96873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
97873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Enables/Disables IP Forwarding
98873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
99873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void setIpForwardingEnabled(boolean enabled);
100873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
101873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
102873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Start tethering services with the specified dhcp server range
103bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt     * arg is a set of start end pairs defining the ranges.
104873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
105bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt    void startTethering(in String[] dhcpRanges);
106873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
107873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
108873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Stop currently running tethering services
109873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
110873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void stopTethering();
111873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
112873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
113873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns true if tethering services are started
114873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
115873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    boolean isTetheringStarted();
116873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
117873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
118873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Tethers the specified interface
119873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
120873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void tetherInterface(String iface);
121873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
122873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
123873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Untethers the specified interface
124873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
125873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void untetherInterface(String iface);
126873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
127873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
128873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns a list of currently tethered interfaces
129873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
130873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    String[] listTetheredInterfaces();
131873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
132873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
133873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Sets the list of DNS forwarders (in order of priority)
134873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
135873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void setDnsForwarders(in String[] dns);
136873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
137873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
138873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns the list of DNS fowarders (in order of priority)
139873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
140873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    String[] getDnsForwarders();
141873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
142873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
143873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  Enables Network Address Translation between two interfaces.
144873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  The address and netmask of the external interface is used for
145873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  the NAT'ed network.
146873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
147873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void enableNat(String internalInterface, String externalInterface);
148873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
149873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
150873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  Disables Network Address Translation between two interfaces.
151873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
152873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void disableNat(String internalInterface, String externalInterface);
15372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
15472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
15572759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     ** PPPD
15672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     **/
15772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
15872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
15972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * Returns the list of currently known TTY devices on the system
16072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     */
16172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    String[] listTtys();
16272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
16372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
16472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * Attaches a PPP server daemon to the specified TTY with the specified
16572759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * local/remote addresses.
16672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     */
167d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr,
168d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            String dns2Addr);
16972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
17072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
17172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * Detaches a PPP server daemon from the specified TTY.
17272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     */
17372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    void detachPppd(String tty);
17472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
175ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    /**
1765321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     * Start Wifi Access Point
1775321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     */
178c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff    void startAccessPoint(in WifiConfiguration wifiConfig, String wlanIface, String softapIface);
1795321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff
1805321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff    /**
1815321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     * Stop Wifi Access Point
1825321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     */
18323eb297c771bd996fe8559178feb1a07be43ad72Irfan Sheriff    void stopAccessPoint(String wlanIface);
1845321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff
185c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff    /**
186c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff     * Set Access Point config
187c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff     */
188c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff    void setAccessPoint(in WifiConfiguration wifiConfig, String wlanIface, String softapIface);
18991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
19091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
1919a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     ** DATA USAGE RELATED
1929a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     **/
1939a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey
1949a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey    /**
1959a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * Return global network statistics summarized at an interface level,
1969a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * without any UID-level granularity.
19791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
1989a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey    NetworkStats getNetworkStatsSummary();
19991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
20091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
2019a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * Return detailed network statistics with UID-level granularity,
2029a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * including interface and tag details.
20391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
2049a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey    NetworkStats getNetworkStatsDetail();
20591cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
20691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
207eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey     * Return detailed network statistics for the requested UID,
208eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey     * including interface and tag details.
209eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey     */
210eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    NetworkStats getNetworkStatsUidDetail(int uid);
211eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey
212eedcb9525ba5befee2ba6ebb7a9ee3f13395c2a3Jeff Sharkey    /**
213b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey     * Set quota for an interface.
21450fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma     */
21541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    void setInterfaceQuota(String iface, long quotaBytes);
216b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey
217b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey    /**
218b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey     * Remove quota for an interface.
219b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey     */
220b3f19ca36c8c1301893c621d8f2150e06210722cJeff Sharkey    void removeInterfaceQuota(String iface);
22150fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma
22250fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma    /**
22341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey     * Set alert for an interface; requires that iface already has quota.
22441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey     */
22541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    void setInterfaceAlert(String iface, long alertBytes);
22641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey
22741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    /**
22841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey     * Remove alert for an interface.
22941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey     */
23041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    void removeInterfaceAlert(String iface);
23141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey
23241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    /**
23341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey     * Set alert across all interfaces.
23441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey     */
23541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    void setGlobalAlert(long alertBytes);
23641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey
23741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey    /**
23850fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma     * Control network activity of a UID over interfaces with a quota limit.
23950fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma     */
24050fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma    void setUidNetworkRules(int uid, boolean rejectOnQuotaInterfaces);
24150fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma
24250fd36d7c38c40b087c8f3e3172478abe0c051d9Ashish Sharma    /**
2439a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * Configures bandwidth throttling on an interface.
24491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
245f0db6e1853e929ae3b65501c31ee57c4dfbc767cSan Mehat    void setInterfaceThrottle(String iface, int rxKbps, int txKbps);
24691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
24791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
24891cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * Returns the currently configured RX throttle values
24991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * for the specified interface
25091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
25191cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    int getInterfaceRxThrottle(String iface);
25291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
25391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
25491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * Returns the currently configured TX throttle values
25591cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * for the specified interface
25691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
25791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    int getInterfaceTxThrottle(String iface);
258be23fba286e6772f2eb37ef25f252d7a73ef9dceSan Mehat
2597475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    /**
2607475c0cea622f126af966c3b5b9741f547e83450Mattias Falk     * Sets the name of the default interface in the DNS resolver.
2617475c0cea622f126af966c3b5b9741f547e83450Mattias Falk     */
2627475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    void setDefaultInterfaceForDns(String iface);
2637475c0cea622f126af966c3b5b9741f547e83450Mattias Falk
2647475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    /**
2657475c0cea622f126af966c3b5b9741f547e83450Mattias Falk     * Bind name servers to an interface in the DNS resolver.
2667475c0cea622f126af966c3b5b9741f547e83450Mattias Falk     */
2677475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    void setDnsServersForInterface(String iface, in String[] servers);
2687475c0cea622f126af966c3b5b9741f547e83450Mattias Falk
2697475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    /**
270572b7048a6ed6cf6c5f6bc6c9d542dc377d601ffRobert Greenwalt     * Flush the DNS cache associated with the default interface.
2717475c0cea622f126af966c3b5b9741f547e83450Mattias Falk     */
2727475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    void flushDefaultDnsCache();
2737475c0cea622f126af966c3b5b9741f547e83450Mattias Falk
2747475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    /**
275572b7048a6ed6cf6c5f6bc6c9d542dc377d601ffRobert Greenwalt     * Flush the DNS cache associated with the specified interface.
2767475c0cea622f126af966c3b5b9741f547e83450Mattias Falk     */
2777475c0cea622f126af966c3b5b9741f547e83450Mattias Falk    void flushInterfaceDnsCache(String iface);
278873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat}
279