/* Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /** * This file defines the PPB_NetAddress_Private interface. */ label Chrome { M13 = 0.0, M17 = 0.1, M19_0 = 1.0, M19_1 = 1.1 }; [assert_size(4)] enum PP_NetAddressFamily_Private { /** * The address family is unspecified. */ PP_NETADDRESSFAMILY_PRIVATE_UNSPECIFIED = 0, /** * The Internet Protocol version 4 (IPv4) address family. */ PP_NETADDRESSFAMILY_PRIVATE_IPV4 = 1, /** * The Internet Protocol version 6 (IPv6) address family. */ PP_NETADDRESSFAMILY_PRIVATE_IPV6 = 2 }; /** * This is an opaque type holding a network address. Plugins must * never access members of this struct directly. */ [assert_size(132)] struct PP_NetAddress_Private { uint32_t size; char[128] data; }; /** * The PPB_NetAddress_Private interface provides operations on * network addresses. */ [version=0.1] interface PPB_NetAddress_Private { /** * Returns PP_TRUE if the two addresses are equal (host and port). */ PP_Bool AreEqual([in] PP_NetAddress_Private addr1, [in] PP_NetAddress_Private addr2); /** * Returns PP_TRUE if the two addresses refer to the same host. */ PP_Bool AreHostsEqual([in] PP_NetAddress_Private addr1, [in] PP_NetAddress_Private addr2); /** * Returns a human-readable description of the network address, optionally * including the port (e.g., "192.168.0.1", "192.168.0.1:99", or "[::1]:80"), * or an undefined var on failure. */ PP_Var Describe([in] PP_Module module, [in] PP_NetAddress_Private addr, [in] PP_Bool include_port); /** * Replaces the port in the given source address. Returns PP_TRUE on success. */ PP_Bool ReplacePort([in] PP_NetAddress_Private src_addr, [in] uint16_t port, [out] PP_NetAddress_Private addr_out); /** * Gets the "any" address (for IPv4 or IPv6); for use with UDP Bind. */ void GetAnyAddress([in] PP_Bool is_ipv6, [out] PP_NetAddress_Private addr); /** * Gets the address family. */ [version=1.0] PP_NetAddressFamily_Private GetFamily([in] PP_NetAddress_Private addr); /** * Gets the port. The port is returned in host byte order. */ [version=1.0] uint16_t GetPort([in] PP_NetAddress_Private addr); /** * Gets the address. The output, address, must be large enough for the * current socket family. The output will be the binary representation of an * address for the current socket family. For IPv4 and IPv6 the address is in * network byte order. PP_TRUE is returned if the address was successfully * retrieved. */ [version=1.0] PP_Bool GetAddress([in] PP_NetAddress_Private addr, [out] mem_t address, [in] uint16_t address_size); /** * Returns ScopeID for IPv6 addresses or 0 for IPv4. */ [version=1.1] uint32_t GetScopeID([in] PP_NetAddress_Private addr); /** * Creates NetAddress with the specified IPv4 address and port * number. */ [version=1.1] void CreateFromIPv4Address([in] uint8_t[4] ip, [in] uint16_t port, [out] PP_NetAddress_Private addr_out); /** * Creates NetAddress with the specified IPv6 address, scope_id and * port number. */ [version=1.1] void CreateFromIPv6Address([in] uint8_t[16] ip, [in] uint32_t scope_id, [in] uint16_t port, [out] PP_NetAddress_Private addr_out); };