1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
|
/* Copyright 2012 The Chromium Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* From private/ppb_net_address_private.idl,
* modified Mon Jun 24 09:52:39 2013.
*/
#ifndef PPAPI_C_PRIVATE_PPB_NET_ADDRESS_PRIVATE_H_
#define PPAPI_C_PRIVATE_PPB_NET_ADDRESS_PRIVATE_H_
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_macros.h"
#include "ppapi/c/pp_module.h"
#include "ppapi/c/pp_stdint.h"
#include "ppapi/c/pp_var.h"
#define PPB_NETADDRESS_PRIVATE_INTERFACE_0_1 "PPB_NetAddress_Private;0.1"
#define PPB_NETADDRESS_PRIVATE_INTERFACE_1_0 "PPB_NetAddress_Private;1.0"
#define PPB_NETADDRESS_PRIVATE_INTERFACE_1_1 "PPB_NetAddress_Private;1.1"
#define PPB_NETADDRESS_PRIVATE_INTERFACE PPB_NETADDRESS_PRIVATE_INTERFACE_1_1
/**
* @file
* This file defines the <code>PPB_NetAddress_Private</code> interface.
*/
/**
* @addtogroup Enums
* @{
*/
typedef enum {
/**
* 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
} PP_NetAddressFamily_Private;
PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_NetAddressFamily_Private, 4);
/**
* @}
*/
/**
* @addtogroup Structs
* @{
*/
/**
* This is an opaque type holding a network address. Plugins must
* never access members of this struct directly.
*/
struct PP_NetAddress_Private {
uint32_t size;
int8_t data[128];
};
PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_NetAddress_Private, 132);
/**
* @}
*/
/**
* @addtogroup Interfaces
* @{
*/
/**
* The <code>PPB_NetAddress_Private</code> interface provides operations on
* network addresses.
*/
struct PPB_NetAddress_Private_1_1 {
/**
* Returns PP_TRUE if the two addresses are equal (host and port).
*/
PP_Bool (*AreEqual)(const struct PP_NetAddress_Private* addr1,
const struct PP_NetAddress_Private* addr2);
/**
* Returns PP_TRUE if the two addresses refer to the same host.
*/
PP_Bool (*AreHostsEqual)(const struct PP_NetAddress_Private* addr1,
const struct 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.
*/
struct PP_Var (*Describe)(PP_Module module,
const struct PP_NetAddress_Private* addr,
PP_Bool include_port);
/**
* Replaces the port in the given source address. Returns PP_TRUE on success.
*/
PP_Bool (*ReplacePort)(const struct PP_NetAddress_Private* src_addr,
uint16_t port,
struct PP_NetAddress_Private* addr_out);
/**
* Gets the "any" address (for IPv4 or IPv6); for use with UDP Bind.
*/
void (*GetAnyAddress)(PP_Bool is_ipv6, struct PP_NetAddress_Private* addr);
/**
* Gets the address family.
*/
PP_NetAddressFamily_Private (*GetFamily)(
const struct PP_NetAddress_Private* addr);
/**
* Gets the port. The port is returned in host byte order.
*/
uint16_t (*GetPort)(const struct 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.
*/
PP_Bool (*GetAddress)(const struct PP_NetAddress_Private* addr,
void* address,
uint16_t address_size);
/**
* Returns ScopeID for IPv6 addresses or 0 for IPv4.
*/
uint32_t (*GetScopeID)(const struct PP_NetAddress_Private* addr);
/**
* Creates NetAddress with the specified IPv4 address and port
* number.
*/
void (*CreateFromIPv4Address)(const uint8_t ip[4],
uint16_t port,
struct PP_NetAddress_Private* addr_out);
/**
* Creates NetAddress with the specified IPv6 address, scope_id and
* port number.
*/
void (*CreateFromIPv6Address)(const uint8_t ip[16],
uint32_t scope_id,
uint16_t port,
struct PP_NetAddress_Private* addr_out);
};
typedef struct PPB_NetAddress_Private_1_1 PPB_NetAddress_Private;
struct PPB_NetAddress_Private_0_1 {
PP_Bool (*AreEqual)(const struct PP_NetAddress_Private* addr1,
const struct PP_NetAddress_Private* addr2);
PP_Bool (*AreHostsEqual)(const struct PP_NetAddress_Private* addr1,
const struct PP_NetAddress_Private* addr2);
struct PP_Var (*Describe)(PP_Module module,
const struct PP_NetAddress_Private* addr,
PP_Bool include_port);
PP_Bool (*ReplacePort)(const struct PP_NetAddress_Private* src_addr,
uint16_t port,
struct PP_NetAddress_Private* addr_out);
void (*GetAnyAddress)(PP_Bool is_ipv6, struct PP_NetAddress_Private* addr);
};
struct PPB_NetAddress_Private_1_0 {
PP_Bool (*AreEqual)(const struct PP_NetAddress_Private* addr1,
const struct PP_NetAddress_Private* addr2);
PP_Bool (*AreHostsEqual)(const struct PP_NetAddress_Private* addr1,
const struct PP_NetAddress_Private* addr2);
struct PP_Var (*Describe)(PP_Module module,
const struct PP_NetAddress_Private* addr,
PP_Bool include_port);
PP_Bool (*ReplacePort)(const struct PP_NetAddress_Private* src_addr,
uint16_t port,
struct PP_NetAddress_Private* addr_out);
void (*GetAnyAddress)(PP_Bool is_ipv6, struct PP_NetAddress_Private* addr);
PP_NetAddressFamily_Private (*GetFamily)(
const struct PP_NetAddress_Private* addr);
uint16_t (*GetPort)(const struct PP_NetAddress_Private* addr);
PP_Bool (*GetAddress)(const struct PP_NetAddress_Private* addr,
void* address,
uint16_t address_size);
};
/**
* @}
*/
#endif /* PPAPI_C_PRIVATE_PPB_NET_ADDRESS_PRIVATE_H_ */
|