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.NetworkStats;
     23 import android.net.RouteInfo;
     24 import android.net.wifi.WifiConfiguration;
     25 
     26 /**
     27  * @hide
     28  */
     29 interface INetworkManagementService
     30 {
     31     /**
     32      ** GENERAL
     33      **/
     34 
     35     /**
     36      * Register an observer to receive events
     37      */
     38     void registerObserver(INetworkManagementEventObserver obs);
     39 
     40     /**
     41      * Unregister an observer from receiving events.
     42      */
     43     void unregisterObserver(INetworkManagementEventObserver obs);
     44 
     45     /**
     46      * Returns a list of currently known network interfaces
     47      */
     48     String[] listInterfaces();
     49 
     50     /**
     51      * Retrieves the specified interface config
     52      *
     53      */
     54     InterfaceConfiguration getInterfaceConfig(String iface);
     55 
     56     /**
     57      * Sets the configuration of the specified interface
     58      */
     59     void setInterfaceConfig(String iface, in InterfaceConfiguration cfg);
     60 
     61     /**
     62      * Clear all IP addresses on the specified interface
     63      */
     64     void clearInterfaceAddresses(String iface);
     65 
     66     /**
     67      * Set interface down
     68      */
     69     void setInterfaceDown(String iface);
     70 
     71     /**
     72      * Set interface up
     73      */
     74     void setInterfaceUp(String iface);
     75 
     76     /**
     77      * Set interface IPv6 privacy extensions
     78      */
     79     void setInterfaceIpv6PrivacyExtensions(String iface, boolean enable);
     80 
     81     /**
     82      * Disable IPv6 on an interface
     83      */
     84     void disableIpv6(String iface);
     85 
     86     /**
     87      * Enable IPv6 on an interface
     88      */
     89     void enableIpv6(String iface);
     90 
     91     /**
     92      * Retrieves the network routes currently configured on the specified
     93      * interface
     94      */
     95     RouteInfo[] getRoutes(String iface);
     96 
     97     /**
     98      * Add the specified route to the interface.
     99      */
    100     void addRoute(String iface, in RouteInfo route);
    101 
    102     /**
    103      * Remove the specified route from the interface.
    104      */
    105     void removeRoute(String iface, in RouteInfo route);
    106 
    107     /**
    108      * Add the specified route to a secondary interface
    109      * This will go into a special route table to be accessed
    110      * via ip rules
    111      */
    112     void addSecondaryRoute(String iface, in RouteInfo route);
    113 
    114     /**
    115      * Remove the specified secondary route.
    116      */
    117     void removeSecondaryRoute(String iface, in RouteInfo route);
    118 
    119     /**
    120      * Shuts down the service
    121      */
    122     void shutdown();
    123 
    124     /**
    125      ** TETHERING RELATED
    126      **/
    127 
    128     /**
    129      * Returns true if IP forwarding is enabled
    130      */
    131     boolean getIpForwardingEnabled();
    132 
    133     /**
    134      * Enables/Disables IP Forwarding
    135      */
    136     void setIpForwardingEnabled(boolean enabled);
    137 
    138     /**
    139      * Start tethering services with the specified dhcp server range
    140      * arg is a set of start end pairs defining the ranges.
    141      */
    142     void startTethering(in String[] dhcpRanges);
    143 
    144     /**
    145      * Stop currently running tethering services
    146      */
    147     void stopTethering();
    148 
    149     /**
    150      * Returns true if tethering services are started
    151      */
    152     boolean isTetheringStarted();
    153 
    154     /**
    155      * Tethers the specified interface
    156      */
    157     void tetherInterface(String iface);
    158 
    159     /**
    160      * Untethers the specified interface
    161      */
    162     void untetherInterface(String iface);
    163 
    164     /**
    165      * Returns a list of currently tethered interfaces
    166      */
    167     String[] listTetheredInterfaces();
    168 
    169     /**
    170      * Sets the list of DNS forwarders (in order of priority)
    171      */
    172     void setDnsForwarders(in String[] dns);
    173 
    174     /**
    175      * Returns the list of DNS fowarders (in order of priority)
    176      */
    177     String[] getDnsForwarders();
    178 
    179     /**
    180      *  Enables Network Address Translation between two interfaces.
    181      *  The address and netmask of the external interface is used for
    182      *  the NAT'ed network.
    183      */
    184     void enableNat(String internalInterface, String externalInterface);
    185 
    186     /**
    187      *  Disables Network Address Translation between two interfaces.
    188      */
    189     void disableNat(String internalInterface, String externalInterface);
    190 
    191     /**
    192      ** PPPD
    193      **/
    194 
    195     /**
    196      * Returns the list of currently known TTY devices on the system
    197      */
    198     String[] listTtys();
    199 
    200     /**
    201      * Attaches a PPP server daemon to the specified TTY with the specified
    202      * local/remote addresses.
    203      */
    204     void attachPppd(String tty, String localAddr, String remoteAddr, String dns1Addr,
    205             String dns2Addr);
    206 
    207     /**
    208      * Detaches a PPP server daemon from the specified TTY.
    209      */
    210     void detachPppd(String tty);
    211 
    212     /**
    213      * Load firmware for operation in the given mode. Currently the three
    214      * modes supported are "AP", "STA" and "P2P".
    215      */
    216     void wifiFirmwareReload(String wlanIface, String mode);
    217 
    218     /**
    219      * Start Wifi Access Point
    220      */
    221     void startAccessPoint(in WifiConfiguration wifiConfig, String iface);
    222 
    223     /**
    224      * Stop Wifi Access Point
    225      */
    226     void stopAccessPoint(String iface);
    227 
    228     /**
    229      * Set Access Point config
    230      */
    231     void setAccessPoint(in WifiConfiguration wifiConfig, String iface);
    232 
    233     /**
    234      ** DATA USAGE RELATED
    235      **/
    236 
    237     /**
    238      * Return global network statistics summarized at an interface level,
    239      * without any UID-level granularity.
    240      */
    241     NetworkStats getNetworkStatsSummaryDev();
    242     NetworkStats getNetworkStatsSummaryXt();
    243 
    244     /**
    245      * Return detailed network statistics with UID-level granularity,
    246      * including interface and tag details.
    247      */
    248     NetworkStats getNetworkStatsDetail();
    249 
    250     /**
    251      * Return detailed network statistics for the requested UID,
    252      * including interface and tag details.
    253      */
    254     NetworkStats getNetworkStatsUidDetail(int uid);
    255 
    256     /**
    257      * Return summary of network statistics for the requested pairs of
    258      * tethering interfaces.  Even indexes are remote interface, and odd
    259      * indexes are corresponding local interfaces.
    260      */
    261     NetworkStats getNetworkStatsTethering(in String[] ifacePairs);
    262 
    263     /**
    264      * Set quota for an interface.
    265      */
    266     void setInterfaceQuota(String iface, long quotaBytes);
    267 
    268     /**
    269      * Remove quota for an interface.
    270      */
    271     void removeInterfaceQuota(String iface);
    272 
    273     /**
    274      * Set alert for an interface; requires that iface already has quota.
    275      */
    276     void setInterfaceAlert(String iface, long alertBytes);
    277 
    278     /**
    279      * Remove alert for an interface.
    280      */
    281     void removeInterfaceAlert(String iface);
    282 
    283     /**
    284      * Set alert across all interfaces.
    285      */
    286     void setGlobalAlert(long alertBytes);
    287 
    288     /**
    289      * Control network activity of a UID over interfaces with a quota limit.
    290      */
    291     void setUidNetworkRules(int uid, boolean rejectOnQuotaInterfaces);
    292 
    293     /**
    294      * Return status of bandwidth control module.
    295      */
    296     boolean isBandwidthControlEnabled();
    297 
    298     /**
    299      * Sets idletimer for an interface.
    300      *
    301      * This either initializes a new idletimer or increases its
    302      * reference-counting if an idletimer already exists for given
    303      * {@code iface}.
    304      *
    305      * {@code label} usually represents the network type of {@code iface}.
    306      * Caller should ensure that {@code label} for an {@code iface} remains the
    307      * same for all calls to addIdleTimer.
    308      *
    309      * Every {@code addIdleTimer} should be paired with a
    310      * {@link removeIdleTimer} to cleanup when the network disconnects.
    311      */
    312     void addIdleTimer(String iface, int timeout, String label);
    313 
    314     /**
    315      * Removes idletimer for an interface.
    316      */
    317     void removeIdleTimer(String iface);
    318 
    319     /**
    320      * Sets the name of the default interface in the DNS resolver.
    321      */
    322     void setDefaultInterfaceForDns(String iface);
    323 
    324     /**
    325      * Bind name servers to an interface in the DNS resolver.
    326      */
    327     void setDnsServersForInterface(String iface, in String[] servers, String domains);
    328 
    329     /**
    330      * Flush the DNS cache associated with the default interface.
    331      */
    332     void flushDefaultDnsCache();
    333 
    334     /**
    335      * Flush the DNS cache associated with the specified interface.
    336      */
    337     void flushInterfaceDnsCache(String iface);
    338 
    339     void setFirewallEnabled(boolean enabled);
    340     boolean isFirewallEnabled();
    341     void setFirewallInterfaceRule(String iface, boolean allow);
    342     void setFirewallEgressSourceRule(String addr, boolean allow);
    343     void setFirewallEgressDestRule(String addr, int port, boolean allow);
    344     void setFirewallUidRule(int uid, boolean allow);
    345 
    346     /**
    347      * Set a process (pid) to use the name servers associated with the specified interface.
    348      */
    349     void setDnsInterfaceForPid(String iface, int pid);
    350 
    351     /**
    352      * Clear a process (pid) from being associated with an interface.
    353      */
    354     void clearDnsInterfaceForPid(int pid);
    355 
    356     /**
    357      * Start the clatd (464xlat) service
    358      */
    359     void startClatd(String interfaceName);
    360 
    361     /**
    362      * Stop the clatd (464xlat) service
    363      */
    364     void stopClatd();
    365 
    366     /**
    367      * Determine whether the clatd (464xlat) service has been started
    368      */
    369     boolean isClatdStarted();
    370 }
    371