14d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat/*
24d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Copyright (C) 2009 The Android Open Source Project
34d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat *
44d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Licensed under the Apache License, Version 2.0 (the "License");
54d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * you may not use this file except in compliance with the License.
64d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * You may obtain a copy of the License at
74d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat *
84d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat *      http://www.apache.org/licenses/LICENSE-2.0
94d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat *
104d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Unless required by applicable law or agreed to in writing, software
114d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * distributed under the License is distributed on an "AS IS" BASIS,
124d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * See the License for the specific language governing permissions and
144d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * limitations under the License.
154d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat */
164d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat
174d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehatpackage android.net;
184d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat
194d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat/**
204d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * Callback class for receiving events from an INetworkManagementService
214d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat *
224d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat * @hide
234d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat */
244d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehatinterface INetworkManagementEventObserver {
254d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    /**
266143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     * Interface configuration status has changed.
274d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     *
284d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * @param iface The interface.
296143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     * @param up True if the interface has been enabled.
304d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     */
316143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen    void interfaceStatusChanged(String iface, boolean up);
326143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen
336143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen    /**
34f59c7d0f2ac8d489b6d8118543a57ea4a603eacfMike J. Chen     * Interface physical-layer link state has changed.  For Ethernet,
356143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     * this method is invoked when the cable is plugged in or unplugged.
366143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     *
376143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     * @param iface The interface.
386143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     * @param up  True if the physical link-layer connection signal is valid.
396143f5f7392fb0d3e5702a46a2415bd0ecb6efb4Mike J. Chen     */
40f59c7d0f2ac8d489b6d8118543a57ea4a603eacfMike J. Chen    void interfaceLinkStateChanged(String iface, boolean up);
414d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat
424d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    /**
434d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * An interface has been added to the system
444d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     *
454d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * @param iface The interface.
464d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     */
474d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    void interfaceAdded(String iface);
484d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat
494d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    /**
504d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * An interface has been removed from the system
514d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     *
524d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     * @param iface The interface.
534d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat     */
544d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat    void interfaceRemoved(String iface);
5512b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall
565c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti
575c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti    /**
585c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * An interface address has been added or updated
595c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     *
605c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param address The address.
615c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param iface The interface.
625c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param flags The address flags.
635c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param scope The address scope.
645c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     */
655c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti    void addressUpdated(String address, String iface, int flags, int scope);
665c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti
675c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti    /**
685c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * An interface address has been removed
695c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     *
705c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param address The address.
715c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param iface The interface.
725c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param flags The address flags.
735c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     * @param scope The address scope.
745c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti     */
755c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti    void addressRemoved(String address, String iface, int flags, int scope);
765c7daac2e3d9020185699ba554d763b825ab1778Lorenzo Colitti
7712b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall    /**
7812b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall     * A networking quota limit has been reached. The quota might not
7912b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall     * be specific to an interface.
8012b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall     *
8112b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall     * @param limitName The name of the limit that triggered.
8212b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall     * @param iface The interface on which the limit was detected.
8312b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall     */
8412b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall    void limitReached(String limitName, String iface);
8512b933d0d9252decaae9fee2456bb1e1cd94c085JP Abgrall
86db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai    /**
87db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai     * Interface data activity status is changed.
88db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai     *
89db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai     * @param iface The interface.
90db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai     * @param active  True if the interface is actively transmitting data, false if it is idle.
91db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai     */
92db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai    void interfaceClassDataActivityChanged(String label, boolean active);
934d02d001ef6e06583e858e63e48d1aebf54ba28dSan Mehat}
94