15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)/* From ppb_network_list.idl modified Mon Sep 9 11:16:26 2013. */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#ifndef PPAPI_C_PPB_NETWORK_LIST_H_ 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define PPAPI_C_PPB_NETWORK_LIST_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ppapi/c/pp_array_output.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define PPB_NETWORKLIST_INTERFACE_1_0 "PPB_NetworkList;1.0" 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define PPB_NETWORKLIST_INTERFACE PPB_NETWORKLIST_INTERFACE_1_0 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * This file defines the <code>PPB_NetworkList</code> interface. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Type of a network interface. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Type of the network interface is not known. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_UNKNOWN = 0, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Wired Ethernet network. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_ETHERNET = 1, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Wireless Wi-Fi network. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_WIFI = 2, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Cellular network (e.g. LTE). 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_CELLULAR = 3 5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} PP_NetworkList_Type; 5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_NetworkList_Type, 4); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * State of a network interface. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Network interface is down. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_STATE_DOWN = 0, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Network interface is up. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_STATE_UP = 1 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} PP_NetworkList_State; 6768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_NetworkList_State, 4); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 7768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * The <code>PPB_NetworkList</code> is used to represent a list of 7868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * network interfaces and their configuration. The content of the list 7968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * is immutable. The current networks configuration can be received 8068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * using the <code>PPB_NetworkMonitor</code> interface. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)struct PPB_NetworkList_1_0 { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Determines if the specified <code>resource</code> is a 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>NetworkList</code> object. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> resource. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns <code>PP_TRUE</code> if <code>resource</code> is 9068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * a <code>PPB_NetworkList</code>, <code>PP_FALSE</code> 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * otherwise. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*IsNetworkList)(PP_Resource resource); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets number of interfaces in the list. 9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns number of available network interfaces or 0 if 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the list has never been updated. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t (*GetCount)(PP_Resource resource); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets name of a network interface. 10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 10958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns name for the network interface with the specified 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>index</code>. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var (*GetName)(PP_Resource resource, uint32_t index); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 11658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets type of a network interface. 11758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 11858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 11958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 12058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 12158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns type of the network interface with the specified 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>index</code>. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 12568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NetworkList_Type (*GetType)(PP_Resource resource, uint32_t index); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 12758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets state of a network interface. 12858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 12958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 13058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 13158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 13258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns current state of the network interface with the 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specified <code>index</code>. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 13668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NetworkList_State (*GetState)(PP_Resource resource, uint32_t index); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 13858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets list of IP addresses for a network interface. 13958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 14058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 14158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 14258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 14358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] output An output array which will receive 14458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_NetAddress</code> resources on success. Please note that the 14558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * ref count of those resources has already been increased by 1 for the 14658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * caller. 14758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 14858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @return An error code from <code>pp_errors.h</code>. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*GetIpAddresses)(PP_Resource resource, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t index, 15258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) struct PP_ArrayOutput output); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 15458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets display name of a network interface. 15558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 15658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 15758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 15858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 15958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns display name for the network interface with the 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specified <code>index</code>. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var (*GetDisplayName)(PP_Resource resource, uint32_t index); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 16558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets MTU (Maximum Transmission Unit) of a network interface. 16658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 16758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 16858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 16958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 17058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns MTU for the network interface with the specified 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>index</code> or 0 if MTU is unknown. 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t (*GetMTU)(PP_Resource resource, uint32_t index); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)typedef struct PPB_NetworkList_1_0 PPB_NetworkList; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif /* PPAPI_C_PPB_NETWORK_LIST_H_ */ 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 184