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) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * This file defines the <code>PPB_NetworkList</code> interface. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)[generate_thunk] 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)label Chrome { 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) M31 = 1.0 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Type of a network interface. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[assert_size(4)] 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)enum PP_NetworkList_Type { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Type of the network interface is not known. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_UNKNOWN = 0, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Wired Ethernet network. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_ETHERNET = 1, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Wireless Wi-Fi network. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_WIFI = 2, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Cellular network (e.g. LTE). 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_TYPE_CELLULAR = 3 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * State of a network interface. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[assert_size(4)] 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)enum PP_NetworkList_State { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Network interface is down. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_STATE_DOWN = 0, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Network interface is up. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NETWORKLIST_STATE_UP = 1 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 5968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * The <code>PPB_NetworkList</code> is used to represent a list of 6068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * network interfaces and their configuration. The content of the list 6168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * is immutable. The current networks configuration can be received 6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * using the <code>PPB_NetworkMonitor</code> interface. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)interface PPB_NetworkList { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Determines if the specified <code>resource</code> is a 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>NetworkList</code> object. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> resource. 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns <code>PP_TRUE</code> if <code>resource</code> is 7268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * a <code>PPB_NetworkList</code>, <code>PP_FALSE</code> 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * otherwise. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool IsNetworkList([in] PP_Resource resource); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets number of interfaces in the list. 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns number of available network interfaces or 0 if 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the list has never been updated. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t GetCount([in] PP_Resource resource); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets name of a network interface. 9058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 9158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 9258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 9358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns name for the network interface with the specified 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>index</code>. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Var GetName([in] PP_Resource resource, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] uint32_t index); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 10258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets type of a network interface. 10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 10458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns type of the network interface with the specified 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>index</code>. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 11168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) [on_failure=PP_NETWORKLIST_TYPE_UNKNOWN] 11268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NetworkList_Type GetType([in] PP_Resource resource, 11368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) [in] uint32_t index); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 11658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets state 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 current state of the network interface with the 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specified <code>index</code>. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 12568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) [on_failure=PP_NETWORKLIST_STATE_DOWN] 12668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_NetworkList_State GetState([in] PP_Resource resource, 12768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) [in] uint32_t index); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 13058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets list of IP addresses for a network interface. 13158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 13258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 13358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 13458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 13558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] output An output array which will receive 13658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_NetAddress</code> resources on success. Please note that the 13758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * ref count of those resources has already been increased by 1 for the 13858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * caller. 13958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 14058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @return An error code from <code>pp_errors.h</code>. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 14258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int32_t GetIpAddresses([in] PP_Resource resource, 14358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [in] uint32_t index, 14458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [in] PP_ArrayOutput output); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 14758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets display name of a network interface. 14858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 14958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 15058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 15158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 15258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns display name for the network interface with the 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specified <code>index</code>. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Var GetDisplayName([in] PP_Resource resource, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] uint32_t index); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 16058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Gets MTU (Maximum Transmission Unit) of a network interface. 16158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 16258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 16358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * network list. 16458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] index Index of the network interface. 16558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return Returns MTU for the network interface with the specified 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>index</code> or 0 if MTU is unknown. 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t GetMTU([in] PP_Resource resource, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] uint32_t index); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 173