Home | History | Annotate | Download | only in os
      1 /* //device/java/android/android/os/INetworkManagementService.aidl
      2 **
      3 ** Copyright 2007, The Android Open Source Project
      4 **
      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
      8 **
      9 **     http://www.apache.org/licenses/LICENSE-2.0
     10 **
     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.
     16 */
     17 
     18 package android.os;
     19 
     20 import android.net.InterfaceConfiguration;
     21 import android.net.INetworkManagementEventObserver;
     22 import android.net.Network;
     23 import android.net.NetworkStats;
     24 import android.net.RouteInfo;
     25 import android.net.UidRange;
     26 import android.net.wifi.WifiConfiguration;
     27 import android.os.INetworkActivityListener;
     28 
     29 /**
     30  * @hide
     31  */
     32 interface INetworkManagementService
     33 {
     34     /**
     35      ** GENERAL
     36      **/
     37 
     38     /**
     39      * Register an observer to receive events
     40      */
     41     void registerObserver(INetworkManagementEventObserver obs);
     42 
     43     /**
     44      * Unregister an observer from receiving events.
     45      */
     46     void unregisterObserver(INetworkManagementEventObserver obs);
     47 
     48     /**
     49      * Returns a list of currently known network interfaces
     50      */
     51     String[] listInterfaces();
     52 
     53     /**
     54      * Retrieves the specified interface config
     55      *
     56      */
     57     InterfaceConfiguration getInterfaceConfig(String iface);
     58 
     59     /**
     60      * Sets the configuration of the specified interface
     61      */
     62     void setInterfaceConfig(String iface, in InterfaceConfiguration cfg);
     63 
     64     /**
     65      * Clear all IP addresses on the specified interface
     66      */
     67     void clearInterfaceAddresses(String iface);
     68 
     69     /**
     70      * Set interface down
     71      */
     72     void setInterfaceDown(String iface);
     73 
     74     /**
     75      * Set interface up
     76      */
     77     void setInterfaceUp(String iface);
     78 
     79     /**
     80      * Set interface IPv6 privacy extensions
     81      */
     82     void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable);
     83 
     84     /**
     85      * Disable IPv6 on an interface
     86      */
     87     void disableIpv6(String iface);
     88 
     89     /**
     90      * Enable IPv6 on an interface
     91      */
     92     void enableIpv6(String iface);
     93 
     94     /**
     95      * Enables or enables IPv6 ND offload.
     96      */
     97     void setInterfaceIpv6NdOffload(String iface, boolean enable);
     98 
     99     /**
    100      * Retrieves the network routes currently configured on the specified
    101      * interface
    102      */
    103     RouteInfo[] getRoutes(String iface);
    104 
    105     /**
    106      * Add the specified route to the interface.
    107      */
    108     void addRoute(int netId, in RouteInfo route);
    109 
    110     /**
    111      * Remove the specified route from the interface.
    112      */
    113     void removeRoute(int netId, in RouteInfo route);
    114 
    115     /**
    116      * Set the specified MTU size
    117      */
    118     void setMtu(String iface, int mtu);
    119 
    120     /**
    121      * Shuts down the service
    122      */
    123     void shutdown();
    124 
    125     /**
    126      ** TETHERING RELATED
    127      **/
    128 
    129     /**
    130      * Returns true if IP forwarding is enabled
    131      */
    132     boolean getIpForwardingEnabled();
    133 
    134     /**
    135      * Enables/Disables IP Forwarding
    136      */
    137     void setIpForwardingEnabled(boolean enabled);
    138 
    139     /**
    140      * Start tethering services with the specified dhcp server range
    141      * arg is a set of start end pairs defining the ranges.
    142      */
    143     void startTethering(in String[] dhcpRanges);
    144 
    145     /**
    146      * Stop currently running tethering services
    147      */
    148     void stopTethering();
    149 
    150     /**
    151      * Returns true if tethering services are started
    152      */
    153     boolean isTetheringStarted();
    154 
    155     /**
    156      * Tethers the specified interface
    157      */
    158     void tetherInterface(String iface);
    159 
    160     /**
    161      * Untethers the specified interface
    162      */
    163     void untetherInterface(String iface);
    164 
    165     /**
    166      * Returns a list of currently tethered interfaces
    167      */
    168     String[] listTetheredInterfaces();
    169 
    170     /**
    171      * Sets the list of DNS forwarders (in order of priority)
    172      */
    173     void setDnsForwarders(in Network network, in String[] dns);
    174 
    175     /**
    176      * Returns the list of DNS forwarders (in order of priority)
    177      */
    178     String[] getDnsForwarders();
    179 
    180     /**
    181      *  Enables Network Address Translation between two interfaces.
    182      *  The address and netmask of the external interface is used for
    183      *  the NAT'ed network.
    184      */
    185     void enableNat(String internalInterface, String externalInterface);
    186 
    187     /**
    188      *  Disables Network Address Translation between two interfaces.
    189      */
    190     void disableNat(String internalInterface, String externalInterface);
    191 
    192     /**
    193      ** PPPD
    194      **/
    195 
    196     /**
    197      * Returns the list of currently known TTY devices on the system
    198      */
    199     String[] listTtys();
    200 
    201     /**
    202      * Attaches a PPP server daemon to the specified TTY with the specified
    203      * local/remote addresses.
    204      */
    205     void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr,
    206             String dns2Addr);
    207 
    208     /**
    209      * Detaches a PPP server daemon from the specified TTY.
    210      */
    211     void detachPppd(String tty);
    212 
    213     /**
    214      * Load firmware for operation in the given mode. Currently the three
    215      * modes supported are "AP", "STA" and "P2P".
    216      */
    217     void wifiFirmwareReload(String wlanIface, String mode);
    218 
    219     /**
    220      * Start Wifi Access Point
    221      */
    222     void startAccessPoint(in WifiConfiguration wifiConfig, String iface);
    223 
    224     /**
    225      * Stop Wifi Access Point
    226      */
    227     void stopAccessPoint(String iface);
    228 
    229     /**
    230      * Set Access Point config
    231      */
    232     void setAccessPoint(in WifiConfiguration wifiConfig, String iface);
    233 
    234     /**
    235      ** DATA USAGE RELATED
    236      **/
    237 
    238     /**
    239      * Return global network statistics summarized at an interface level,
    240      * without any UID-level granularity.
    241      */
    242     NetworkStats getNetworkStatsSummaryDev();
    243     NetworkStats getNetworkStatsSummaryXt();
    244 
    245     /**
    246      * Return detailed network statistics with UID-level granularity,
    247      * including interface and tag details.
    248      */
    249     NetworkStats getNetworkStatsDetail();
    250 
    251     /**
    252      * Return detailed network statistics for the requested UID,
    253      * including interface and tag details.
    254      */
    255     NetworkStats getNetworkStatsUidDetail(int uid);
    256 
    257     /**
    258      * Return summary of network statistics all tethering interfaces.
    259      */
    260     NetworkStats getNetworkStatsTethering();
    261 
    262     /**
    263      * Set quota for an interface.
    264      */
    265     void setInterfaceQuota(String iface, long quotaBytes);
    266 
    267     /**
    268      * Remove quota for an interface.
    269      */
    270     void removeInterfaceQuota(String iface);
    271 
    272     /**
    273      * Set alert for an interface; requires that iface already has quota.
    274      */
    275     void setInterfaceAlert(String iface, long alertBytes);
    276 
    277     /**
    278      * Remove alert for an interface.
    279      */
    280     void removeInterfaceAlert(String iface);
    281 
    282     /**
    283      * Set alert across all interfaces.
    284      */
    285     void setGlobalAlert(long alertBytes);
    286 
    287     /**
    288      * Control network activity of a UID over interfaces with a quota limit.
    289      */
    290     void setUidNetworkRules(int uid, boolean rejectOnQuotaInterfaces);
    291 
    292     /**
    293      * Return status of bandwidth control module.
    294      */
    295     boolean isBandwidthControlEnabled();
    296 
    297     /**
    298      * Sets idletimer for an interface.
    299      *
    300      * This either initializes a new idletimer or increases its
    301      * reference-counting if an idletimer already exists for given
    302      * {@code iface}.
    303      *
    304      * {@code type} is the type of the interface, such as TYPE_MOBILE.
    305      *
    306      * Every {@code addIdleTimer} should be paired with a
    307      * {@link removeIdleTimer} to cleanup when the network disconnects.
    308      */
    309     void addIdleTimer(String iface, int timeout, int type);
    310 
    311     /**
    312      * Removes idletimer for an interface.
    313      */
    314     void removeIdleTimer(String iface);
    315 
    316     /**
    317      * Bind name servers to a network in the DNS resolver.
    318      */
    319     void setDnsServersForNetwork(int netId, in String[] servers, String domains);
    320 
    321     /**
    322      * Flush the DNS cache associated with the specified network.
    323      */
    324     void flushNetworkDnsCache(int netId);
    325 
    326     void setFirewallEnabled(boolean enabled);
    327     boolean isFirewallEnabled();
    328     void setFirewallInterfaceRule(String iface, boolean allow);
    329     void setFirewallEgressSourceRule(String addr, boolean allow);
    330     void setFirewallEgressDestRule(String addr, int port, boolean allow);
    331     void setFirewallUidRule(int uid, boolean allow);
    332 
    333     /**
    334      * Set all packets from users in ranges to go through VPN specified by netId.
    335      */
    336     void addVpnUidRanges(int netId, in UidRange[] ranges);
    337 
    338     /**
    339      * Clears the special VPN rules for users in ranges and VPN specified by netId.
    340      */
    341     void removeVpnUidRanges(int netId, in UidRange[] ranges);
    342 
    343     /**
    344      * Start the clatd (464xlat) service on the given interface.
    345      */
    346     void startClatd(String interfaceName);
    347 
    348     /**
    349      * Stop the clatd (464xlat) service on the given interface.
    350      */
    351     void stopClatd(String interfaceName);
    352 
    353     /**
    354      * Determine whether the clatd (464xlat) service has been started on the given interface.
    355      */
    356     boolean isClatdStarted(String interfaceName);
    357 
    358     /**
    359      * Start listening for mobile activity state changes.
    360      */
    361     void registerNetworkActivityListener(INetworkActivityListener listener);
    362 
    363     /**
    364      * Stop listening for mobile activity state changes.
    365      */
    366     void unregisterNetworkActivityListener(INetworkActivityListener listener);
    367 
    368     /**
    369      * Check whether the mobile radio is currently active.
    370      */
    371     boolean isNetworkActive();
    372 
    373     /**
    374      * Setup a new physical network.
    375      */
    376     void createPhysicalNetwork(int netId);
    377 
    378     /**
    379      * Setup a new VPN.
    380      */
    381     void createVirtualNetwork(int netId, boolean hasDNS, boolean secure);
    382 
    383     /**
    384      * Remove a network.
    385      */
    386     void removeNetwork(int netId);
    387 
    388     /**
    389      * Add an interface to a network.
    390      */
    391     void addInterfaceToNetwork(String iface, int netId);
    392 
    393     /**
    394      * Remove an Interface from a network.
    395      */
    396     void removeInterfaceFromNetwork(String iface, int netId);
    397 
    398     void addLegacyRouteForNetId(int netId, in RouteInfo routeInfo, int uid);
    399 
    400     void setDefaultNetId(int netId);
    401     void clearDefaultNetId();
    402 
    403     void setPermission(String permission, in int[] uids);
    404     void clearPermission(in int[] uids);
    405 
    406     /**
    407      * Allow UID to call protect().
    408      */
    409     void allowProtect(int uid);
    410 
    411     /**
    412      * Deny UID from calling protect().
    413      */
    414     void denyProtect(int uid);
    415 
    416     void addInterfaceToLocalNetwork(String iface, in List<RouteInfo> routes);
    417     void removeInterfaceFromLocalNetwork(String iface);
    418 }
    419