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