| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453 |
- /* //device/java/android/android/os/INetworkManagementService.antlr.aidl
- **
- ** Copyright 2007, The Android Open Source Project
- **
- ** Licensed under the Apache License, Version 2.0 (the "License");
- ** you may not use this file except in compliance with the License.
- ** You may obtain a copy of the License at
- **
- ** http://www.apache.org/licenses/LICENSE-2.0
- **
- ** Unless required by applicable law or agreed to in writing, software
- ** distributed under the License is distributed on an "AS IS" BASIS,
- ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ** See the License for the specific language governing permissions and
- ** limitations under the License.
- */
- package android.os;
- import android.net.InterfaceConfiguration;
- import android.net.INetd;
- import android.net.INetworkManagementEventObserver;
- import android.net.ITetheringStatsProvider;
- import android.net.Network;
- import android.net.NetworkStats;
- import android.net.RouteInfo;
- import android.net.UidRange;
- import android.os.INetworkActivityListener;
- /**
- * @hide
- */
- interface INetworkManagementService
- {
- /**
- ** GENERAL
- **/
- /**
- * Register an observer to receive events.
- */
- void registerObserver(INetworkManagementEventObserver obs);
- /**
- * Unregister an observer from receiving events.
- */
- void unregisterObserver(INetworkManagementEventObserver obs);
- /**
- * Retrieve an INetd to talk to netd.
- */
- INetd getNetdService();
- /**
- * Returns a list of currently known network interfaces
- */
- String[] listInterfaces();
- /**
- * Retrieves the specified interface config
- *
- */
- InterfaceConfiguration getInterfaceConfig(String iface);
- /**
- * Sets the configuration of the specified interface
- */
- void setInterfaceConfig(String iface, in InterfaceConfiguration cfg);
- /**
- * Clear all IP addresses on the specified interface
- */
- void clearInterfaceAddresses(String iface);
- /**
- * Set interface down
- */
- void setInterfaceDown(String iface);
- /**
- * Set interface up
- */
- void setInterfaceUp(String iface);
- /**
- * Set interface IPv6 privacy extensions
- */
- void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable);
- /**
- * Disable IPv6 on an interface
- */
- void disableIpv6(String iface);
- /**
- * Enable IPv6 on an interface
- */
- void enableIpv6(String iface);
- /**
- * Set IPv6 autoconf address generation mode.
- * This is a no-op if an unsupported mode is requested.
- */
- void setIPv6AddrGenMode(String iface, int mode);
- /**
- * Add the specified route to the interface.
- */
- void addRoute(int netId, in RouteInfo route);
- /**
- * Remove the specified route from the interface.
- */
- void removeRoute(int netId, in RouteInfo route);
- /**
- * Set the specified MTU size
- */
- void setMtu(String iface, int mtu);
- /**
- * Shuts down the service
- */
- void shutdown();
- /**
- ** TETHERING RELATED
- **/
- /**
- * Returns true if IP forwarding is enabled
- */
- boolean getIpForwardingEnabled();
- /**
- * Enables/Disables IP Forwarding
- */
- void setIpForwardingEnabled(boolean enabled);
- /**
- * Start tethering services with the specified dhcp server range
- * arg is a set of start end pairs defining the ranges.
- */
- void startTethering(in String[] dhcpRanges);
- /**
- * Stop currently running tethering services
- */
- void stopTethering();
- /**
- * Returns true if tethering services are started
- */
- boolean isTetheringStarted();
- /**
- * Tethers the specified interface
- */
- void tetherInterface(String iface);
- /**
- * Untethers the specified interface
- */
- void untetherInterface(String iface);
- /**
- * Returns a list of currently tethered interfaces
- */
- String[] listTetheredInterfaces();
- /**
- * Sets the list of DNS forwarders (in order of priority)
- */
- void setDnsForwarders(in Network network, in String[] dns);
- /**
- * Returns the list of DNS forwarders (in order of priority)
- */
- String[] getDnsForwarders();
- /**
- * Enables unidirectional packet forwarding from {@code fromIface} to
- * {@code toIface}.
- */
- void startInterfaceForwarding(String fromIface, String toIface);
- /**
- * Disables unidirectional packet forwarding from {@code fromIface} to
- * {@code toIface}.
- */
- void stopInterfaceForwarding(String fromIface, String toIface);
- /**
- * Enables Network Address Translation between two interfaces.
- * The address and netmask of the external interface is used for
- * the NAT'ed network.
- */
- void enableNat(String internalInterface, String externalInterface);
- /**
- * Disables Network Address Translation between two interfaces.
- */
- void disableNat(String internalInterface, String externalInterface);
- /**
- * Registers a {@code ITetheringStatsProvider} to provide tethering statistics.
- * All registered providers will be called in order, and their results will be added together.
- * Netd is always registered as a tethering stats provider.
- */
- void registerTetheringStatsProvider(ITetheringStatsProvider provider, String name);
- /**
- * Unregisters a previously-registered {@code ITetheringStatsProvider}.
- */
- void unregisterTetheringStatsProvider(ITetheringStatsProvider provider);
- /**
- * Reports that a tethering provider has reached a data limit.
- *
- * Currently triggers a global alert, which causes NetworkStatsService to poll counters and
- * re-evaluate data usage.
- *
- * This does not take an interface name because:
- * 1. The tethering offload stats provider cannot reliably determine the interface on which the
- * limit was reached, because the HAL does not provide it.
- * 2. Firing an interface-specific alert instead of a global alert isn't really useful since in
- * all cases of interest, the system responds to both in the same way - it polls stats, and
- * then notifies NetworkPolicyManagerService of the fact.
- */
- void tetherLimitReached(ITetheringStatsProvider provider);
- /**
- ** PPPD
- **/
- /**
- * Returns the list of currently known TTY devices on the system
- */
- String[] listTtys();
- /**
- * Attaches a PPP server daemon to the specified TTY with the specified
- * local/remote addresses.
- */
- void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr,
- String dns2Addr);
- /**
- * Detaches a PPP server daemon from the specified TTY.
- */
- void detachPppd(String tty);
- /**
- ** DATA USAGE RELATED
- **/
- /**
- * Return global network statistics summarized at an interface level,
- * without any UID-level granularity.
- */
- NetworkStats getNetworkStatsSummaryDev();
- NetworkStats getNetworkStatsSummaryXt();
- /**
- * Return detailed network statistics with UID-level granularity,
- * including interface and tag details.
- */
- NetworkStats getNetworkStatsDetail();
- /**
- * Return detailed network statistics for the requested UID and interfaces,
- * including interface and tag details.
- * @param uid UID to obtain statistics for, or {@link NetworkStats#UID_ALL}.
- * @param ifaces Interfaces to obtain statistics for, or {@link NetworkStats#INTERFACES_ALL}.
- */
- NetworkStats getNetworkStatsUidDetail(int uid, in String[] ifaces);
- /**
- * Return summary of network statistics all tethering interfaces.
- */
- NetworkStats getNetworkStatsTethering(int how);
- /**
- * Set quota for an interface.
- */
- void setInterfaceQuota(String iface, long quotaBytes);
- /**
- * Remove quota for an interface.
- */
- void removeInterfaceQuota(String iface);
- /**
- * Set alert for an interface; requires that iface already has quota.
- */
- void setInterfaceAlert(String iface, long alertBytes);
- /**
- * Remove alert for an interface.
- */
- void removeInterfaceAlert(String iface);
- /**
- * Set alert across all interfaces.
- */
- void setGlobalAlert(long alertBytes);
- /**
- * Control network activity of a UID over interfaces with a quota limit.
- */
- void setUidMeteredNetworkBlacklist(int uid, boolean enable);
- void setUidMeteredNetworkWhitelist(int uid, boolean enable);
- boolean setDataSaverModeEnabled(boolean enable);
- void setUidCleartextNetworkPolicy(int uid, int policy);
- /**
- * Return status of bandwidth control module.
- */
- boolean isBandwidthControlEnabled();
- /**
- * Sets idletimer for an interface.
- *
- * This either initializes a new idletimer or increases its
- * reference-counting if an idletimer already exists for given
- * {@code iface}.
- *
- * {@code type} is the type of the interface, such as TYPE_MOBILE.
- *
- * Every {@code addIdleTimer} should be paired with a
- * {@link removeIdleTimer} to cleanup when the network disconnects.
- */
- void addIdleTimer(String iface, int timeout, int type);
- /**
- * Removes idletimer for an interface.
- */
- void removeIdleTimer(String iface);
- /**
- * Configure name servers, search paths, and resolver parameters for the given network.
- */
- void setDnsConfigurationForNetwork(int netId, in String[] servers, in String[] domains,
- in int[] params, String tlsHostname, in String[] tlsServers);
- void setFirewallEnabled(boolean enabled);
- boolean isFirewallEnabled();
- void setFirewallInterfaceRule(String iface, boolean allow);
- void setFirewallUidRule(int chain, int uid, int rule);
- void setFirewallUidRules(int chain, in int[] uids, in int[] rules);
- void setFirewallChainEnabled(int chain, boolean enable);
- /**
- * Set all packets from users in ranges to go through VPN specified by netId.
- */
- void addVpnUidRanges(int netId, in UidRange[] ranges);
- /**
- * Clears the special VPN rules for users in ranges and VPN specified by netId.
- */
- void removeVpnUidRanges(int netId, in UidRange[] ranges);
- /**
- * Start the clatd (464xlat) service on the given interface.
- */
- void startClatd(String interfaceName);
- /**
- * Stop the clatd (464xlat) service on the given interface.
- */
- void stopClatd(String interfaceName);
- /**
- * Determine whether the clatd (464xlat) service has been started on the given interface.
- */
- boolean isClatdStarted(String interfaceName);
- /**
- * Start listening for mobile activity state changes.
- */
- void registerNetworkActivityListener(INetworkActivityListener listener);
- /**
- * Stop listening for mobile activity state changes.
- */
- void unregisterNetworkActivityListener(INetworkActivityListener listener);
- /**
- * Check whether the mobile radio is currently active.
- */
- boolean isNetworkActive();
- /**
- * Setup a new physical network.
- * @param permission null if no permissions required to access this network. PERMISSION_NETWORK
- * or PERMISSION_SYSTEM to set respective permission.
- */
- void createPhysicalNetwork(int netId, String permission);
- /**
- * Setup a new VPN.
- */
- void createVirtualNetwork(int netId, boolean hasDNS, boolean secure);
- /**
- * Remove a network.
- */
- void removeNetwork(int netId);
- /**
- * Add an interface to a network.
- */
- void addInterfaceToNetwork(String iface, int netId);
- /**
- * Remove an Interface from a network.
- */
- void removeInterfaceFromNetwork(String iface, int netId);
- void addLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid);
- void setDefaultNetId(int netId);
- void clearDefaultNetId();
- /**
- * Set permission for a network.
- * @param permission null to clear permissions. PERMISSION_NETWORK or PERMISSION_SYSTEM to set
- * permission.
- */
- void setNetworkPermission(int netId, String permission);
- void setPermission(String permission, in int[] uids);
- void clearPermission(in int[] uids);
- /**
- * Allow UID to call protect().
- */
- void allowProtect(int uid);
- /**
- * Deny UID from calling protect().
- */
- void denyProtect(int uid);
- void addInterfaceToLocalNetwork(String iface, in List<RouteInfo> routes);
- void removeInterfaceFromLocalNetwork(String iface);
- int removeRoutesFromLocalNetwork(in List<RouteInfo> routes);
- void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges);
- boolean isNetworkRestricted(int uid);
- }
|