OLD | NEW |
| (Empty) |
1 /* Copyright 2013 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 dev/ppb_net_address_dev.idl modified Wed Jun 19 22:41:57 2013. */ | |
7 | |
8 #ifndef PPAPI_C_DEV_PPB_NET_ADDRESS_DEV_H_ | |
9 #define PPAPI_C_DEV_PPB_NET_ADDRESS_DEV_H_ | |
10 | |
11 #include "ppapi/c/pp_bool.h" | |
12 #include "ppapi/c/pp_instance.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_NETADDRESS_DEV_INTERFACE_0_1 "PPB_NetAddress(Dev);0.1" | |
19 #define PPB_NETADDRESS_DEV_INTERFACE PPB_NETADDRESS_DEV_INTERFACE_0_1 | |
20 | |
21 /** | |
22 * @file | |
23 * This file defines the <code>PPB_NetAddress_Dev</code> interface. | |
24 */ | |
25 | |
26 | |
27 /** | |
28 * @addtogroup Enums | |
29 * @{ | |
30 */ | |
31 /** | |
32 * Network address family types. | |
33 */ | |
34 typedef enum { | |
35 /** | |
36 * The address family is unspecified. | |
37 */ | |
38 PP_NETADDRESS_FAMILY_UNSPECIFIED = 0, | |
39 /** | |
40 * The Internet Protocol version 4 (IPv4) address family. | |
41 */ | |
42 PP_NETADDRESS_FAMILY_IPV4 = 1, | |
43 /** | |
44 * The Internet Protocol version 6 (IPv6) address family. | |
45 */ | |
46 PP_NETADDRESS_FAMILY_IPV6 = 2 | |
47 } PP_NetAddress_Family_Dev; | |
48 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_NetAddress_Family_Dev, 4); | |
49 /** | |
50 * @} | |
51 */ | |
52 | |
53 /** | |
54 * @addtogroup Structs | |
55 * @{ | |
56 */ | |
57 /** | |
58 * All members are expressed in network byte order. | |
59 */ | |
60 struct PP_NetAddress_IPv4_Dev { | |
61 /** | |
62 * Port number. | |
63 */ | |
64 uint16_t port; | |
65 /** | |
66 * IPv4 address. | |
67 */ | |
68 uint8_t addr[4]; | |
69 }; | |
70 PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_NetAddress_IPv4_Dev, 6); | |
71 | |
72 /** | |
73 * All members are expressed in network byte order. | |
74 */ | |
75 struct PP_NetAddress_IPv6_Dev { | |
76 /** | |
77 * Port number. | |
78 */ | |
79 uint16_t port; | |
80 /** | |
81 * IPv6 address. | |
82 */ | |
83 uint8_t addr[16]; | |
84 }; | |
85 PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_NetAddress_IPv6_Dev, 18); | |
86 /** | |
87 * @} | |
88 */ | |
89 | |
90 /** | |
91 * @addtogroup Interfaces | |
92 * @{ | |
93 */ | |
94 /** | |
95 * The <code>PPB_NetAddress_Dev</code> interface provides operations on | |
96 * network addresses. | |
97 */ | |
98 struct PPB_NetAddress_Dev_0_1 { | |
99 /** | |
100 * Creates a <code>PPB_NetAddress_Dev</code> resource with the specified IPv4 | |
101 * address. | |
102 * | |
103 * @param[in] instance A <code>PP_Instance</code> identifying one instance of | |
104 * a module. | |
105 * @param[in] ipv4_addr An IPv4 address. | |
106 * | |
107 * @return A <code>PP_Resource</code> representing the same address as | |
108 * <code>ipv4_addr</code> or 0 on failure. | |
109 */ | |
110 PP_Resource (*CreateFromIPv4Address)( | |
111 PP_Instance instance, | |
112 const struct PP_NetAddress_IPv4_Dev* ipv4_addr); | |
113 /** | |
114 * Creates a <code>PPB_NetAddress_Dev</code> resource with the specified IPv6 | |
115 * address. | |
116 * | |
117 * @param[in] instance A <code>PP_Instance</code> identifying one instance of | |
118 * a module. | |
119 * @param[in] ipv6_addr An IPv6 address. | |
120 * | |
121 * @return A <code>PP_Resource</code> representing the same address as | |
122 * <code>ipv6_addr</code> or 0 on failure. | |
123 */ | |
124 PP_Resource (*CreateFromIPv6Address)( | |
125 PP_Instance instance, | |
126 const struct PP_NetAddress_IPv6_Dev* ipv6_addr); | |
127 /** | |
128 * Determines if a given resource is a network address. | |
129 * | |
130 * @param[in] addr A <code>PP_Resource</code> to check. | |
131 * | |
132 * @return <code>PP_TRUE</code> if the input is a | |
133 * <code>PPB_NetAddress_Dev</code> resource; <code>PP_FALSE</code> otherwise. | |
134 */ | |
135 PP_Bool (*IsNetAddress)(PP_Resource addr); | |
136 /** | |
137 * Gets the address family. | |
138 * | |
139 * @param[in] addr A <code>PP_Resource</code> corresponding to a network | |
140 * address. | |
141 * | |
142 * @return The address family on success; | |
143 * <code>PP_NETADDRESS_FAMILY_UNSPECIFIED</code> on failure. | |
144 */ | |
145 PP_NetAddress_Family_Dev (*GetFamily)(PP_Resource addr); | |
146 /** | |
147 * Returns a human-readable description of the network address. The | |
148 * description is in the form of host [ ":" port ] and conforms to | |
149 * http://tools.ietf.org/html/rfc3986#section-3.2 for IPv4 and IPv6 addresses | |
150 * (e.g., "192.168.0.1", "192.168.0.1:99", or "[::1]:80"). | |
151 * | |
152 * @param[in] addr A <code>PP_Resource</code> corresponding to a network | |
153 * address. | |
154 * @param[in] include_port Whether to include the port number in the | |
155 * description. | |
156 * | |
157 * @return A string <code>PP_Var</code> on success; an undefined | |
158 * <code>PP_Var</code> on failure. | |
159 */ | |
160 struct PP_Var (*DescribeAsString)(PP_Resource addr, PP_Bool include_port); | |
161 /** | |
162 * Fills a <code>PP_NetAddress_IPv4_Dev</code> structure if the network | |
163 * address is of <code>PP_NETADDRESS_FAMILY_IPV4</code> address family. | |
164 * Note that passing a network address of | |
165 * <code>PP_NETADDRESS_FAMILY_IPV6</code> address family will fail even if the | |
166 * address is an IPv4-mapped IPv6 address. | |
167 * | |
168 * @param[in] addr A <code>PP_Resource</code> corresponding to a network | |
169 * address. | |
170 * @param[out] ipv4_addr A <code>PP_NetAddress_IPv4_Dev</code> structure to | |
171 * store the result. | |
172 * | |
173 * @return A <code>PP_Bool</code> value indicating whether the operation is | |
174 * successful or not. | |
175 */ | |
176 PP_Bool (*DescribeAsIPv4Address)(PP_Resource addr, | |
177 struct PP_NetAddress_IPv4_Dev* ipv4_addr); | |
178 /** | |
179 * Fills a <code>PP_NetAddress_IPv6_Dev</code> structure if the network | |
180 * address is of <code>PP_NETADDRESS_FAMILY_IPV6</code> address family. | |
181 * Note that passing a network address of | |
182 * <code>PP_NETADDRESS_FAMILY_IPV4</code> address family will fail - this | |
183 * method doesn't map it to an IPv6 address. | |
184 * | |
185 * @param[in] addr A <code>PP_Resource</code> corresponding to a network | |
186 * address. | |
187 * @param[out] ipv6_addr A <code>PP_NetAddress_IPv6_Dev</code> structure to | |
188 * store the result. | |
189 * | |
190 * @return A <code>PP_Bool</code> value indicating whether the operation is | |
191 * successful or not. | |
192 */ | |
193 PP_Bool (*DescribeAsIPv6Address)(PP_Resource addr, | |
194 struct PP_NetAddress_IPv6_Dev* ipv6_addr); | |
195 }; | |
196 | |
197 typedef struct PPB_NetAddress_Dev_0_1 PPB_NetAddress_Dev; | |
198 /** | |
199 * @} | |
200 */ | |
201 | |
202 #endif /* PPAPI_C_DEV_PPB_NET_ADDRESS_DEV_H_ */ | |
203 | |
OLD | NEW |