1 /* //device/java/android/android/os/INetworkManagementService.aidl
3 ** Copyright 2007, The Android Open Source Project
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
9 ** http://www.apache.org/licenses/LICENSE-2.0
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
20 import android.net.InterfaceConfiguration;
21 import android.net.INetd;
22 import android.net.INetworkManagementEventObserver;
23 import android.net.Network;
24 import android.net.NetworkStats;
25 import android.net.RouteInfo;
26 import android.net.UidRange;
27 import android.net.wifi.WifiConfiguration;
28 import android.os.INetworkActivityListener;
33 interface INetworkManagementService
40 * Register an observer to receive events.
42 void registerObserver(INetworkManagementEventObserver obs);
45 * Unregister an observer from receiving events.
47 void unregisterObserver(INetworkManagementEventObserver obs);
50 * Retrieve an INetd to talk to netd.
52 INetd getNetdService();
55 * Returns a list of currently known network interfaces
57 String[] listInterfaces();
60 * Retrieves the specified interface config
63 InterfaceConfiguration getInterfaceConfig(String iface);
66 * Sets the configuration of the specified interface
68 void setInterfaceConfig(String iface, in InterfaceConfiguration cfg);
71 * Clear all IP addresses on the specified interface
73 void clearInterfaceAddresses(String iface);
78 void setInterfaceDown(String iface);
83 void setInterfaceUp(String iface);
86 * Set interface IPv6 privacy extensions
88 void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable);
91 * Disable IPv6 on an interface
93 void disableIpv6(String iface);
96 * Enable IPv6 on an interface
98 void enableIpv6(String iface);
101 * Enables or enables IPv6 ND offload.
103 void setInterfaceIpv6NdOffload(String iface, boolean enable);
106 * Add the specified route to the interface.
108 void addRoute(int netId, in RouteInfo route);
111 * Remove the specified route from the interface.
113 void removeRoute(int netId, in RouteInfo route);
116 * Set the specified MTU size
118 void setMtu(String iface, int mtu);
121 * Shuts down the service
130 * Returns true if IP forwarding is enabled
132 boolean getIpForwardingEnabled();
135 * Enables/Disables IP Forwarding
137 void setIpForwardingEnabled(boolean enabled);
140 * Start tethering services with the specified dhcp server range
141 * arg is a set of start end pairs defining the ranges.
143 void startTethering(in String[] dhcpRanges);
146 * Stop currently running tethering services
148 void stopTethering();
151 * Returns true if tethering services are started
153 boolean isTetheringStarted();
156 * Tethers the specified interface
158 void tetherInterface(String iface);
161 * Untethers the specified interface
163 void untetherInterface(String iface);
166 * Returns a list of currently tethered interfaces
168 String[] listTetheredInterfaces();
171 * Sets the list of DNS forwarders (in order of priority)
173 void setDnsForwarders(in Network network, in String[] dns);
176 * Returns the list of DNS forwarders (in order of priority)
178 String[] getDnsForwarders();
181 * Enables unidirectional packet forwarding from {@code fromIface} to
184 void startInterfaceForwarding(String fromIface, String toIface);
187 * Disables unidirectional packet forwarding from {@code fromIface} to
190 void stopInterfaceForwarding(String fromIface, String toIface);
193 * Enables Network Address Translation between two interfaces.
194 * The address and netmask of the external interface is used for
195 * the NAT'ed network.
197 void enableNat(String internalInterface, String externalInterface);
200 * Disables Network Address Translation between two interfaces.
202 void disableNat(String internalInterface, String externalInterface);
209 * Returns the list of currently known TTY devices on the system
214 * Attaches a PPP server daemon to the specified TTY with the specified
215 * local/remote addresses.
217 void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr,
221 * Detaches a PPP server daemon from the specified TTY.
223 void detachPppd(String tty);
226 * Load firmware for operation in the given mode. Currently the three
227 * modes supported are "AP", "STA" and "P2P".
229 void wifiFirmwareReload(String wlanIface, String mode);
232 * Start Wifi Access Point
234 void startAccessPoint(in WifiConfiguration wifiConfig, String iface);
237 * Stop Wifi Access Point
239 void stopAccessPoint(String iface);
242 * Set Access Point config
244 void setAccessPoint(in WifiConfiguration wifiConfig, String iface);
247 ** DATA USAGE RELATED
251 * Return global network statistics summarized at an interface level,
252 * without any UID-level granularity.
254 NetworkStats getNetworkStatsSummaryDev();
255 NetworkStats getNetworkStatsSummaryXt();
258 * Return detailed network statistics with UID-level granularity,
259 * including interface and tag details.
261 NetworkStats getNetworkStatsDetail();
264 * Return detailed network statistics for the requested UID,
265 * including interface and tag details.
267 NetworkStats getNetworkStatsUidDetail(int uid);
270 * Return summary of network statistics all tethering interfaces.
272 NetworkStats getNetworkStatsTethering();
275 * Set quota for an interface.
277 void setInterfaceQuota(String iface, long quotaBytes);
280 * Remove quota for an interface.
282 void removeInterfaceQuota(String iface);
285 * Set alert for an interface; requires that iface already has quota.
287 void setInterfaceAlert(String iface, long alertBytes);
290 * Remove alert for an interface.
292 void removeInterfaceAlert(String iface);
295 * Set alert across all interfaces.
297 void setGlobalAlert(long alertBytes);
300 * Control network activity of a UID over interfaces with a quota limit.
302 void setUidMeteredNetworkBlacklist(int uid, boolean enable);
303 void setUidMeteredNetworkWhitelist(int uid, boolean enable);
304 boolean setDataSaverModeEnabled(boolean enable);
306 void setUidCleartextNetworkPolicy(int uid, int policy);
309 * Return status of bandwidth control module.
311 boolean isBandwidthControlEnabled();
314 * Sets idletimer for an interface.
316 * This either initializes a new idletimer or increases its
317 * reference-counting if an idletimer already exists for given
320 * {@code type} is the type of the interface, such as TYPE_MOBILE.
322 * Every {@code addIdleTimer} should be paired with a
323 * {@link removeIdleTimer} to cleanup when the network disconnects.
325 void addIdleTimer(String iface, int timeout, int type);
328 * Removes idletimer for an interface.
330 void removeIdleTimer(String iface);
333 * Configure name servers, search paths, and resolver parameters for the given network.
335 void setDnsConfigurationForNetwork(int netId, in String[] servers, String domains);
338 * Bind name servers to a network in the DNS resolver.
340 void setDnsServersForNetwork(int netId, in String[] servers, String domains);
342 void setFirewallEnabled(boolean enabled);
343 boolean isFirewallEnabled();
344 void setFirewallInterfaceRule(String iface, boolean allow);
345 void setFirewallEgressSourceRule(String addr, boolean allow);
346 void setFirewallEgressDestRule(String addr, int port, boolean allow);
347 void setFirewallUidRule(int chain, int uid, int rule);
348 void setFirewallUidRules(int chain, in int[] uids, in int[] rules);
349 void setFirewallChainEnabled(int chain, boolean enable);
352 * Set all packets from users in ranges to go through VPN specified by netId.
354 void addVpnUidRanges(int netId, in UidRange[] ranges);
357 * Clears the special VPN rules for users in ranges and VPN specified by netId.
359 void removeVpnUidRanges(int netId, in UidRange[] ranges);
362 * Start the clatd (464xlat) service on the given interface.
364 void startClatd(String interfaceName);
367 * Stop the clatd (464xlat) service on the given interface.
369 void stopClatd(String interfaceName);
372 * Determine whether the clatd (464xlat) service has been started on the given interface.
374 boolean isClatdStarted(String interfaceName);
377 * Start listening for mobile activity state changes.
379 void registerNetworkActivityListener(INetworkActivityListener listener);
382 * Stop listening for mobile activity state changes.
384 void unregisterNetworkActivityListener(INetworkActivityListener listener);
387 * Check whether the mobile radio is currently active.
389 boolean isNetworkActive();
392 * Setup a new physical network.
393 * @param permission null if no permissions required to access this network. PERMISSION_NETWORK
394 * or PERMISSION_SYSTEM to set respective permission.
396 void createPhysicalNetwork(int netId, String permission);
401 void createVirtualNetwork(int netId, boolean hasDNS, boolean secure);
406 void removeNetwork(int netId);
409 * Add an interface to a network.
411 void addInterfaceToNetwork(String iface, int netId);
414 * Remove an Interface from a network.
416 void removeInterfaceFromNetwork(String iface, int netId);
418 void addLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid);
420 void setDefaultNetId(int netId);
421 void clearDefaultNetId();
424 * Set permission for a network.
425 * @param permission null to clear permissions. PERMISSION_NETWORK or PERMISSION_SYSTEM to set
428 void setNetworkPermission(int netId, String permission);
430 void setPermission(String permission, in int[] uids);
431 void clearPermission(in int[] uids);
434 * Allow UID to call protect().
436 void allowProtect(int uid);
439 * Deny UID from calling protect().
441 void denyProtect(int uid);
443 void addInterfaceToLocalNetwork(String iface, in List<RouteInfo> routes);
444 void removeInterfaceFromLocalNetwork(String iface);
445 int removeRoutesFromLocalNetwork(in List<RouteInfo> routes);
447 void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges);