INetworkManagementService.aidl revision 9a13f36cddaad01350bdb5f000167811a1d753c9
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;
239ab518ad793385f8405edf19363fe825fb64f5f8Irfan Sheriffimport android.net.wifi.WifiConfiguration;
24ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat
25873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat/**
26873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat * @hide
27873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat */
28873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehatinterface INetworkManagementService
29873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat{
30873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
31873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     ** GENERAL
32873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     **/
33873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
34873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
354d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * Register an observer to receive events
364d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     */
374d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    void registerObserver(INetworkManagementEventObserver obs);
384d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat
394d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    /**
404d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * Unregister an observer from receiving events.
414d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     */
424d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    void unregisterObserver(INetworkManagementEventObserver obs);
434d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat
444d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    /**
45873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns a list of currently known network interfaces
46873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
47873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    String[] listInterfaces();
48873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
49873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
50ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat     * Retrieves the specified interface config
51ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat     *
52ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat     */
53ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat    InterfaceConfiguration getInterfaceConfig(String iface);
54ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat
55ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat    /**
56ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat     * Sets the configuration of the specified interface
57ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat     */
58ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat    void setInterfaceConfig(String iface, in InterfaceConfiguration cfg);
59ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat
60ed4fc8acc52d89f1d4dec853a29288c6d06717c3San Mehat    /**
61873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Shuts down the service
62873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
63873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void shutdown();
64873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
65873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
66873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     ** TETHERING RELATED
67873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     **/
68873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
69873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
70873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns true if IP forwarding is enabled
71873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
72873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    boolean getIpForwardingEnabled();
73873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
74873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
75873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Enables/Disables IP Forwarding
76873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
77873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void setIpForwardingEnabled(boolean enabled);
78873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
79873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
80873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Start tethering services with the specified dhcp server range
81bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt     * arg is a set of start end pairs defining the ranges.
82873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
83bfb7bfa53847832db2a3eb05e5eff7cb974c3c7aRobert Greenwalt    void startTethering(in String[] dhcpRanges);
84873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
85873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
86873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Stop currently running tethering services
87873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
88873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void stopTethering();
89873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
90873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
91873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns true if tethering services are started
92873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
93873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    boolean isTetheringStarted();
94873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
95873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
96873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Tethers the specified interface
97873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
98873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void tetherInterface(String iface);
99873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
100873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
101873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Untethers the specified interface
102873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
103873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void untetherInterface(String iface);
104873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
105873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
106873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns a list of currently tethered interfaces
107873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
108873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    String[] listTetheredInterfaces();
109873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
110873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
111873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Sets the list of DNS forwarders (in order of priority)
112873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
113873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void setDnsForwarders(in String[] dns);
114873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
115873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
116873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     * Returns the list of DNS fowarders (in order of priority)
117873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
118873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    String[] getDnsForwarders();
119873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
120873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
121873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  Enables Network Address Translation between two interfaces.
122873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  The address and netmask of the external interface is used for
123873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  the NAT'ed network.
124873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
125873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void enableNat(String internalInterface, String externalInterface);
126873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat
127873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    /**
128873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     *  Disables Network Address Translation between two interfaces.
129873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat     */
130873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat    void disableNat(String internalInterface, String externalInterface);
13172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
13272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
13372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     ** PPPD
13472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     **/
13572759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
13672759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
13772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * Returns the list of currently known TTY devices on the system
13872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     */
13972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    String[] listTtys();
14072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
14172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
14272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * Attaches a PPP server daemon to the specified TTY with the specified
14372759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * local/remote addresses.
14472759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     */
145d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr,
146d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            String dns2Addr);
14772759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
14872759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    /**
14972759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     * Detaches a PPP server daemon from the specified TTY.
15072759df749bb8557269db86c2e3b2a8a0343cc26San Mehat     */
15172759df749bb8557269db86c2e3b2a8a0343cc26San Mehat    void detachPppd(String tty);
15272759df749bb8557269db86c2e3b2a8a0343cc26San Mehat
153ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    /**
154ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt     * Turn on USB RNDIS support - this will turn off thinks like adb/mass-storage
155ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt     */
156ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    void startUsbRNDIS();
157ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt
158ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    /**
159ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt     * Turn off USB RNDIS support
160ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt     */
161ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    void stopUsbRNDIS();
162ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt
163ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    /**
164ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt     * Check the status of USB RNDIS support
165ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt     */
166ce1200d42c46ae5d3ec637587b07dfdc02ad21c0Robert Greenwalt    boolean isUsbRNDISStarted();
1675321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff
1685321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff    /**
1695321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     * Start Wifi Access Point
1705321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     */
171c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff    void startAccessPoint(in WifiConfiguration wifiConfig, String wlanIface, String softapIface);
1725321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff
1735321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff    /**
1745321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     * Stop Wifi Access Point
1755321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff     */
1765321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff    void stopAccessPoint();
1775321aef4a22daef6ed01ed48d936cdd82f2e38b7Irfan Sheriff
178c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff    /**
179c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff     * Set Access Point config
180c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff     */
181c2f54c267b896cd1799d82be81e904a2b56c2f26Irfan Sheriff    void setAccessPoint(in WifiConfiguration wifiConfig, String wlanIface, String softapIface);
18291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
18391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
1849a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     ** DATA USAGE RELATED
1859a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     **/
1869a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey
1879a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey    /**
1889a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * Return global network statistics summarized at an interface level,
1899a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * without any UID-level granularity.
19091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
1919a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey    NetworkStats getNetworkStatsSummary();
19291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
19391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
1949a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * Return detailed network statistics with UID-level granularity,
1959a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * including interface and tag details.
19691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
1979a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey    NetworkStats getNetworkStatsDetail();
19891cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
19991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
2009a13f36cddaad01350bdb5f000167811a1d753c9Jeff Sharkey     * Configures bandwidth throttling on an interface.
20191cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
202f0db6e1853e929ae3b65501c31ee57c4dfbc767cSan Mehat    void setInterfaceThrottle(String iface, int rxKbps, int txKbps);
20391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
20491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
20591cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * Returns the currently configured RX throttle values
20691cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * for the specified interface
20791cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
20891cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    int getInterfaceRxThrottle(String iface);
20991cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat
21091cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    /**
21191cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * Returns the currently configured TX throttle values
21291cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     * for the specified interface
21391cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat     */
21491cac64cd010e6b4006fdd14b39dbc75778f20cbSan Mehat    int getInterfaceTxThrottle(String iface);
215be23fba286e6772f2eb37ef25f252d7a73ef9dceSan Mehat
216873f2145941cc28f6931dc18b5e9987bd22e2e19San Mehat}
217