1/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 */
5
6/**
7 * This file defines the <code>PPB_NetworkList</code> interface.
8 */
9
10[generate_thunk]
11
12label Chrome {
13  M31 = 1.0
14};
15
16/**
17 * Type of a network interface.
18 */
19[assert_size(4)]
20enum PP_NetworkList_Type {
21  /**
22   * Type of the network interface is not known.
23   */
24  PP_NETWORKLIST_TYPE_UNKNOWN = 0,
25
26  /**
27   * Wired Ethernet network.
28   */
29  PP_NETWORKLIST_TYPE_ETHERNET = 1,
30
31  /**
32   * Wireless Wi-Fi network.
33   */
34  PP_NETWORKLIST_TYPE_WIFI = 2,
35
36  /**
37   * Cellular network (e.g. LTE).
38   */
39  PP_NETWORKLIST_TYPE_CELLULAR = 3
40};
41
42/**
43 * State of a network interface.
44 */
45[assert_size(4)]
46enum PP_NetworkList_State  {
47  /**
48   * Network interface is down.
49   */
50  PP_NETWORKLIST_STATE_DOWN = 0,
51
52  /**
53   * Network interface is up.
54   */
55  PP_NETWORKLIST_STATE_UP = 1
56};
57
58/**
59 * The <code>PPB_NetworkList</code> is used to represent a list of
60 * network interfaces and their configuration. The content of the list
61 * is immutable.  The current networks configuration can be received
62 * using the <code>PPB_NetworkMonitor</code> interface.
63 */
64interface PPB_NetworkList {
65  /**
66   * Determines if the specified <code>resource</code> is a
67   * <code>NetworkList</code> object.
68   *
69   * @param[in] resource A <code>PP_Resource</code> resource.
70   *
71   * @return Returns <code>PP_TRUE</code> if <code>resource</code> is
72   * a <code>PPB_NetworkList</code>, <code>PP_FALSE</code>
73   * otherwise.
74   */
75  PP_Bool IsNetworkList([in] PP_Resource resource);
76
77  /**
78   * Gets number of interfaces in the list.
79   *
80   * @param[in] resource A <code>PP_Resource</code> corresponding to a
81   * network list.
82   *
83   * @return Returns number of available network interfaces or 0 if
84   * the list has never been updated.
85   */
86  uint32_t GetCount([in] PP_Resource resource);
87
88  /**
89   * Gets name of a network interface.
90   *
91   * @param[in] resource A <code>PP_Resource</code> corresponding to a
92   * network list.
93   * @param[in] index Index of the network interface.
94   *
95   * @return Returns name for the network interface with the specified
96   * <code>index</code>.
97   */
98  PP_Var GetName([in] PP_Resource resource,
99                 [in] uint32_t index);
100
101  /**
102   * Gets type of a network interface.
103   *
104   * @param[in] resource A <code>PP_Resource</code> corresponding to a
105   * network list.
106   * @param[in] index Index of the network interface.
107   *
108   * @return Returns type of the network interface with the specified
109   * <code>index</code>.
110   */
111  [on_failure=PP_NETWORKLIST_TYPE_UNKNOWN]
112  PP_NetworkList_Type GetType([in] PP_Resource resource,
113                              [in] uint32_t index);
114
115  /**
116   * Gets state of a network interface.
117   *
118   * @param[in] resource A <code>PP_Resource</code> corresponding to a
119   * network list.
120   * @param[in] index Index of the network interface.
121   *
122   * @return Returns current state of the network interface with the
123   * specified <code>index</code>.
124   */
125  [on_failure=PP_NETWORKLIST_STATE_DOWN]
126  PP_NetworkList_State GetState([in] PP_Resource resource,
127                                [in] uint32_t index);
128
129  /**
130   * Gets list of IP addresses for a network interface.
131   *
132   * @param[in] resource A <code>PP_Resource</code> corresponding to a
133   * network list.
134   * @param[in] index Index of the network interface.
135   * @param[in] output An output array which will receive
136   * <code>PPB_NetAddress</code> resources on success. Please note that the
137   * ref count of those resources has already been increased by 1 for the
138   * caller.
139   *
140   * @return An error code from <code>pp_errors.h</code>.
141   */
142  int32_t GetIpAddresses([in] PP_Resource resource,
143                         [in] uint32_t index,
144                         [in] PP_ArrayOutput output);
145
146  /**
147   * Gets display name of a network interface.
148   *
149   * @param[in] resource A <code>PP_Resource</code> corresponding to a
150   * network list.
151   * @param[in] index Index of the network interface.
152   *
153   * @return Returns display name for the network interface with the
154   * specified <code>index</code>.
155   */
156  PP_Var GetDisplayName([in] PP_Resource resource,
157                        [in] uint32_t index);
158
159  /**
160   * Gets MTU (Maximum Transmission Unit) of a network interface.
161   *
162   * @param[in] resource A <code>PP_Resource</code> corresponding to a
163   * network list.
164   * @param[in] index Index of the network interface.
165   *
166   * @return Returns MTU for the network interface with the specified
167   * <code>index</code> or 0 if MTU is unknown.
168   */
169  uint32_t GetMTU([in] PP_Resource resource,
170                  [in] uint32_t index);
171
172};
173