1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
---|
2 | /* ***** BEGIN LICENSE BLOCK *****
|
---|
3 | * Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
---|
4 | *
|
---|
5 | * The contents of this file are subject to the Mozilla Public License Version
|
---|
6 | * 1.1 (the "License"); you may not use this file except in compliance with
|
---|
7 | * the License. You may obtain a copy of the License at
|
---|
8 | * http://www.mozilla.org/MPL/
|
---|
9 | *
|
---|
10 | * Software distributed under the License is distributed on an "AS IS" basis,
|
---|
11 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
---|
12 | * for the specific language governing rights and limitations under the
|
---|
13 | * License.
|
---|
14 | *
|
---|
15 | * The Original Code is the Netscape Portable Runtime (NSPR).
|
---|
16 | *
|
---|
17 | * The Initial Developer of the Original Code is
|
---|
18 | * Netscape Communications Corporation.
|
---|
19 | * Portions created by the Initial Developer are Copyright (C) 1998-2000
|
---|
20 | * the Initial Developer. All Rights Reserved.
|
---|
21 | *
|
---|
22 | * Contributor(s):
|
---|
23 | *
|
---|
24 | * Alternatively, the contents of this file may be used under the terms of
|
---|
25 | * either the GNU General Public License Version 2 or later (the "GPL"), or
|
---|
26 | * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
---|
27 | * in which case the provisions of the GPL or the LGPL are applicable instead
|
---|
28 | * of those above. If you wish to allow use of your version of this file only
|
---|
29 | * under the terms of either the GPL or the LGPL, and not to allow others to
|
---|
30 | * use your version of this file under the terms of the MPL, indicate your
|
---|
31 | * decision by deleting the provisions above and replace them with the notice
|
---|
32 | * and other provisions required by the GPL or the LGPL. If you do not delete
|
---|
33 | * the provisions above, a recipient may use your version of this file under
|
---|
34 | * the terms of any one of the MPL, the GPL or the LGPL.
|
---|
35 | *
|
---|
36 | * ***** END LICENSE BLOCK ***** */
|
---|
37 |
|
---|
38 | #ifndef prnetdb_h___
|
---|
39 | #define prnetdb_h___
|
---|
40 |
|
---|
41 | #include "prtypes.h"
|
---|
42 | #include "prio.h"
|
---|
43 |
|
---|
44 | PR_BEGIN_EXTERN_C
|
---|
45 |
|
---|
46 |
|
---|
47 | /*
|
---|
48 | *********************************************************************
|
---|
49 | * Translate an Internet address to/from a character string
|
---|
50 | *********************************************************************
|
---|
51 | */
|
---|
52 | NSPR_API(PRStatus) PR_StringToNetAddr(
|
---|
53 | const char *string, PRNetAddr *addr);
|
---|
54 |
|
---|
55 | NSPR_API(PRStatus) PR_NetAddrToString(
|
---|
56 | const PRNetAddr *addr, char *string, PRUint32 size);
|
---|
57 |
|
---|
58 | /*
|
---|
59 | ** Structures returned by network data base library. All addresses are
|
---|
60 | ** supplied in host order, and returned in network order (suitable for
|
---|
61 | ** use in system calls).
|
---|
62 | */
|
---|
63 | /*
|
---|
64 | ** Beware that WINSOCK.H defines h_addrtype and h_length as short.
|
---|
65 | ** Client code does direct struct copies of hostent to PRHostEnt and
|
---|
66 | ** hence the ifdef.
|
---|
67 | */
|
---|
68 | typedef struct PRHostEnt {
|
---|
69 | char *h_name; /* official name of host */
|
---|
70 | char **h_aliases; /* alias list */
|
---|
71 | #if defined(WIN32) || defined(WIN16)
|
---|
72 | PRInt16 h_addrtype; /* host address type */
|
---|
73 | PRInt16 h_length; /* length of address */
|
---|
74 | #else
|
---|
75 | PRInt32 h_addrtype; /* host address type */
|
---|
76 | PRInt32 h_length; /* length of address */
|
---|
77 | #endif
|
---|
78 | char **h_addr_list; /* list of addresses from name server */
|
---|
79 | } PRHostEnt;
|
---|
80 |
|
---|
81 | /* A safe size to use that will mostly work... */
|
---|
82 | #if (defined(AIX) && defined(_THREAD_SAFE)) || defined(OSF1)
|
---|
83 | #define PR_NETDB_BUF_SIZE sizeof(struct protoent_data)
|
---|
84 | #else
|
---|
85 | #define PR_NETDB_BUF_SIZE 1024
|
---|
86 | #endif
|
---|
87 |
|
---|
88 | /***********************************************************************
|
---|
89 | ** FUNCTION:
|
---|
90 | ** DESCRIPTION: PR_GetHostByName()
|
---|
91 | ** Lookup a host by name.
|
---|
92 | **
|
---|
93 | ** INPUTS:
|
---|
94 | ** char *hostname Character string defining the host name of interest
|
---|
95 | ** char *buf A scratch buffer for the runtime to return result.
|
---|
96 | ** This buffer is allocated by the caller.
|
---|
97 | ** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to
|
---|
98 | ** use is PR_NETDB_BUF_SIZE.
|
---|
99 | ** OUTPUTS:
|
---|
100 | ** PRHostEnt *hostentry
|
---|
101 | ** This structure is filled in by the runtime if
|
---|
102 | ** the function returns PR_SUCCESS. This structure
|
---|
103 | ** is allocated by the caller.
|
---|
104 | ** RETURN:
|
---|
105 | ** PRStatus PR_SUCCESS if the lookup succeeds. If it fails
|
---|
106 | ** the result will be PR_FAILURE and the reason
|
---|
107 | ** for the failure can be retrieved by PR_GetError().
|
---|
108 | ***********************************************************************/
|
---|
109 | NSPR_API(PRStatus) PR_GetHostByName(
|
---|
110 | const char *hostname, char *buf, PRIntn bufsize, PRHostEnt *hostentry);
|
---|
111 |
|
---|
112 | /***********************************************************************
|
---|
113 | ** FUNCTION:
|
---|
114 | ** DESCRIPTION: PR_GetIPNodeByName()
|
---|
115 | ** Lookup a host by name. Equivalent to getipnodebyname(AI_DEFAULT)
|
---|
116 | ** of RFC 2553.
|
---|
117 | **
|
---|
118 | ** INPUTS:
|
---|
119 | ** char *hostname Character string defining the host name of interest
|
---|
120 | ** PRUint16 af Address family (either PR_AF_INET or PR_AF_INET6)
|
---|
121 | ** PRIntn flags Specifies the types of addresses that are searched
|
---|
122 | ** for and the types of addresses that are returned.
|
---|
123 | ** The only supported flag is PR_AI_DEFAULT.
|
---|
124 | ** char *buf A scratch buffer for the runtime to return result.
|
---|
125 | ** This buffer is allocated by the caller.
|
---|
126 | ** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to
|
---|
127 | ** use is PR_NETDB_BUF_SIZE.
|
---|
128 | ** OUTPUTS:
|
---|
129 | ** PRHostEnt *hostentry
|
---|
130 | ** This structure is filled in by the runtime if
|
---|
131 | ** the function returns PR_SUCCESS. This structure
|
---|
132 | ** is allocated by the caller.
|
---|
133 | ** RETURN:
|
---|
134 | ** PRStatus PR_SUCCESS if the lookup succeeds. If it fails
|
---|
135 | ** the result will be PR_FAILURE and the reason
|
---|
136 | ** for the failure can be retrieved by PR_GetError().
|
---|
137 | ***********************************************************************/
|
---|
138 |
|
---|
139 |
|
---|
140 | #define PR_AI_ALL 0x08
|
---|
141 | #define PR_AI_V4MAPPED 0x10
|
---|
142 | #define PR_AI_ADDRCONFIG 0x20
|
---|
143 | #define PR_AI_NOCANONNAME 0x8000
|
---|
144 | #define PR_AI_DEFAULT (PR_AI_V4MAPPED | PR_AI_ADDRCONFIG)
|
---|
145 |
|
---|
146 | NSPR_API(PRStatus) PR_GetIPNodeByName(
|
---|
147 | const char *hostname,
|
---|
148 | PRUint16 af,
|
---|
149 | PRIntn flags,
|
---|
150 | char *buf,
|
---|
151 | PRIntn bufsize,
|
---|
152 | PRHostEnt *hostentry);
|
---|
153 |
|
---|
154 | /***********************************************************************
|
---|
155 | ** FUNCTION:
|
---|
156 | ** DESCRIPTION: PR_GetHostByAddr()
|
---|
157 | ** Lookup a host entry by its network address.
|
---|
158 | **
|
---|
159 | ** INPUTS:
|
---|
160 | ** char *hostaddr IP address of host in question
|
---|
161 | ** char *buf A scratch buffer for the runtime to return result.
|
---|
162 | ** This buffer is allocated by the caller.
|
---|
163 | ** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to
|
---|
164 | ** use is PR_NETDB_BUF_SIZE.
|
---|
165 | ** OUTPUTS:
|
---|
166 | ** PRHostEnt *hostentry
|
---|
167 | ** This structure is filled in by the runtime if
|
---|
168 | ** the function returns PR_SUCCESS. This structure
|
---|
169 | ** is allocated by the caller.
|
---|
170 | ** RETURN:
|
---|
171 | ** PRStatus PR_SUCCESS if the lookup succeeds. If it fails
|
---|
172 | ** the result will be PR_FAILURE and the reason
|
---|
173 | ** for the failure can be retrieved by PR_GetError().
|
---|
174 | ***********************************************************************/
|
---|
175 | NSPR_API(PRStatus) PR_GetHostByAddr(
|
---|
176 | const PRNetAddr *hostaddr, char *buf, PRIntn bufsize, PRHostEnt *hostentry);
|
---|
177 |
|
---|
178 | /***********************************************************************
|
---|
179 | ** FUNCTION: PR_EnumerateHostEnt()
|
---|
180 | ** DESCRIPTION:
|
---|
181 | ** A stateless enumerator over a PRHostEnt structure acquired from
|
---|
182 | ** PR_GetHostByName() PR_GetHostByAddr() to evaluate the possible
|
---|
183 | ** network addresses.
|
---|
184 | **
|
---|
185 | ** INPUTS:
|
---|
186 | ** PRIntn enumIndex Index of the enumeration. The enumeration starts
|
---|
187 | ** and ends with a value of zero.
|
---|
188 | **
|
---|
189 | ** PRHostEnt *hostEnt A pointer to a host entry struct that was
|
---|
190 | ** previously returned by PR_GetHostByName() or
|
---|
191 | ** PR_GetHostByAddr().
|
---|
192 | **
|
---|
193 | ** PRUint16 port The port number to be assigned as part of the
|
---|
194 | ** PRNetAddr.
|
---|
195 | **
|
---|
196 | ** OUTPUTS:
|
---|
197 | ** PRNetAddr *address A pointer to an address structure that will be
|
---|
198 | ** filled in by the call to the enumeration if the
|
---|
199 | ** result of the call is greater than zero.
|
---|
200 | **
|
---|
201 | ** RETURN:
|
---|
202 | ** PRIntn The value that should be used for the next call
|
---|
203 | ** of the enumerator ('enumIndex'). The enumeration
|
---|
204 | ** is ended if this value is returned zero.
|
---|
205 | ** If a value of -1 is returned, the enumeration
|
---|
206 | ** has failed. The reason for the failure can be
|
---|
207 | ** retrieved by calling PR_GetError().
|
---|
208 | ***********************************************************************/
|
---|
209 | NSPR_API(PRIntn) PR_EnumerateHostEnt(
|
---|
210 | PRIntn enumIndex, const PRHostEnt *hostEnt, PRUint16 port, PRNetAddr *address);
|
---|
211 |
|
---|
212 | /***********************************************************************
|
---|
213 | ** FUNCTION: PR_InitializeNetAddr(),
|
---|
214 | ** DESCRIPTION:
|
---|
215 | ** Initialize the fields of a PRNetAddr, assigning well known values as
|
---|
216 | ** appropriate.
|
---|
217 | **
|
---|
218 | ** INPUTS
|
---|
219 | ** PRNetAddrValue val The value to be assigned to the IP Address portion
|
---|
220 | ** of the network address. This can only specify the
|
---|
221 | ** special well known values that are equivalent to
|
---|
222 | ** INADDR_ANY and INADDR_LOOPBACK.
|
---|
223 | **
|
---|
224 | ** PRUint16 port The port number to be assigned in the structure.
|
---|
225 | **
|
---|
226 | ** OUTPUTS:
|
---|
227 | ** PRNetAddr *addr The address to be manipulated.
|
---|
228 | **
|
---|
229 | ** RETURN:
|
---|
230 | ** PRStatus To indicate success or failure. If the latter, the
|
---|
231 | ** reason for the failure can be retrieved by calling
|
---|
232 | ** PR_GetError();
|
---|
233 | ***********************************************************************/
|
---|
234 | typedef enum PRNetAddrValue
|
---|
235 | {
|
---|
236 | PR_IpAddrNull, /* do NOT overwrite the IP address */
|
---|
237 | PR_IpAddrAny, /* assign logical INADDR_ANY to IP address */
|
---|
238 | PR_IpAddrLoopback, /* assign logical INADDR_LOOPBACK */
|
---|
239 | PR_IpAddrV4Mapped /* IPv4 mapped address */
|
---|
240 | } PRNetAddrValue;
|
---|
241 |
|
---|
242 | NSPR_API(PRStatus) PR_InitializeNetAddr(
|
---|
243 | PRNetAddrValue val, PRUint16 port, PRNetAddr *addr);
|
---|
244 |
|
---|
245 | /***********************************************************************
|
---|
246 | ** FUNCTION: PR_SetNetAddr(),
|
---|
247 | ** DESCRIPTION:
|
---|
248 | ** Set the fields of a PRNetAddr, assigning well known values as
|
---|
249 | ** appropriate. This function is similar to PR_InitializeNetAddr
|
---|
250 | ** but differs in that the address family is specified.
|
---|
251 | **
|
---|
252 | ** INPUTS
|
---|
253 | ** PRNetAddrValue val The value to be assigned to the IP Address portion
|
---|
254 | ** of the network address. This can only specify the
|
---|
255 | ** special well known values that are equivalent to
|
---|
256 | ** INADDR_ANY and INADDR_LOOPBACK.
|
---|
257 | **
|
---|
258 | ** PRUint16 af The address family (either PR_AF_INET or PR_AF_INET6)
|
---|
259 | **
|
---|
260 | ** PRUint16 port The port number to be assigned in the structure.
|
---|
261 | **
|
---|
262 | ** OUTPUTS:
|
---|
263 | ** PRNetAddr *addr The address to be manipulated.
|
---|
264 | **
|
---|
265 | ** RETURN:
|
---|
266 | ** PRStatus To indicate success or failure. If the latter, the
|
---|
267 | ** reason for the failure can be retrieved by calling
|
---|
268 | ** PR_GetError();
|
---|
269 | ***********************************************************************/
|
---|
270 | NSPR_API(PRStatus) PR_SetNetAddr(
|
---|
271 | PRNetAddrValue val, PRUint16 af, PRUint16 port, PRNetAddr *addr);
|
---|
272 |
|
---|
273 | /***********************************************************************
|
---|
274 | ** FUNCTION:
|
---|
275 | ** DESCRIPTION: PR_IsNetAddrType()
|
---|
276 | ** Determine if the network address is of the specified type.
|
---|
277 | **
|
---|
278 | ** INPUTS:
|
---|
279 | ** const PRNetAddr *addr A network address.
|
---|
280 | ** PRNetAddrValue The type of network address
|
---|
281 | **
|
---|
282 | ** RETURN:
|
---|
283 | ** PRBool PR_TRUE if the network address is of the
|
---|
284 | ** specified type, else PR_FALSE.
|
---|
285 | ***********************************************************************/
|
---|
286 | NSPR_API(PRBool) PR_IsNetAddrType(const PRNetAddr *addr, PRNetAddrValue val);
|
---|
287 |
|
---|
288 | /***********************************************************************
|
---|
289 | ** FUNCTION:
|
---|
290 | ** DESCRIPTION: PR_ConvertIPv4AddrToIPv6()
|
---|
291 | ** Convert an IPv4 addr to an (IPv4-mapped) IPv6 addr
|
---|
292 | **
|
---|
293 | ** INPUTS:
|
---|
294 | ** PRUint32 v4addr IPv4 address
|
---|
295 | **
|
---|
296 | ** OUTPUTS:
|
---|
297 | ** PRIPv6Addr *v6addr The converted IPv6 address
|
---|
298 | **
|
---|
299 | ** RETURN:
|
---|
300 | ** void
|
---|
301 | **
|
---|
302 | ***********************************************************************/
|
---|
303 | NSPR_API(void) PR_ConvertIPv4AddrToIPv6(PRUint32 v4addr, PRIPv6Addr *v6addr);
|
---|
304 |
|
---|
305 | /***********************************************************************
|
---|
306 | ** MACRO:
|
---|
307 | ** DESCRIPTION: PR_NetAddrFamily()
|
---|
308 | ** Get the 'family' field of a PRNetAddr union.
|
---|
309 | **
|
---|
310 | ** INPUTS:
|
---|
311 | ** const PRNetAddr *addr A network address.
|
---|
312 | **
|
---|
313 | ** RETURN:
|
---|
314 | ** PRUint16 The 'family' field of 'addr'.
|
---|
315 | ***********************************************************************/
|
---|
316 | #define PR_NetAddrFamily(addr) ((addr)->raw.family)
|
---|
317 |
|
---|
318 | /***********************************************************************
|
---|
319 | ** MACRO:
|
---|
320 | ** DESCRIPTION: PR_NetAddrInetPort()
|
---|
321 | ** Get the 'port' field of a PRNetAddr union.
|
---|
322 | **
|
---|
323 | ** INPUTS:
|
---|
324 | ** const PRNetAddr *addr A network address.
|
---|
325 | **
|
---|
326 | ** RETURN:
|
---|
327 | ** PRUint16 The 'port' field of 'addr'.
|
---|
328 | ***********************************************************************/
|
---|
329 | #define PR_NetAddrInetPort(addr) \
|
---|
330 | ((addr)->raw.family == PR_AF_INET6 ? (addr)->ipv6.port : (addr)->inet.port)
|
---|
331 |
|
---|
332 | /***********************************************************************
|
---|
333 | ** FUNCTION:
|
---|
334 | ** DESCRIPTION: PR_GetProtoByName()
|
---|
335 | ** Lookup a protocol entry based on protocol's name
|
---|
336 | **
|
---|
337 | ** INPUTS:
|
---|
338 | ** char *protocolname Character string of the protocol's name.
|
---|
339 | ** char *buf A scratch buffer for the runtime to return result.
|
---|
340 | ** This buffer is allocated by the caller.
|
---|
341 | ** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to
|
---|
342 | ** use is PR_NETDB_BUF_SIZE.
|
---|
343 | ** OUTPUTS:
|
---|
344 | ** PRHostEnt *PRProtoEnt
|
---|
345 | ** This structure is filled in by the runtime if
|
---|
346 | ** the function returns PR_SUCCESS. This structure
|
---|
347 | ** is allocated by the caller.
|
---|
348 | ** RETURN:
|
---|
349 | ** PRStatus PR_SUCCESS if the lookup succeeds. If it fails
|
---|
350 | ** the result will be PR_FAILURE and the reason
|
---|
351 | ** for the failure can be retrieved by PR_GetError().
|
---|
352 | ***********************************************************************/
|
---|
353 |
|
---|
354 | typedef struct PRProtoEnt {
|
---|
355 | char *p_name; /* official protocol name */
|
---|
356 | char **p_aliases; /* alias list */
|
---|
357 | #if defined(WIN32) || defined(WIN16)
|
---|
358 | PRInt16 p_num; /* protocol # */
|
---|
359 | #else
|
---|
360 | PRInt32 p_num; /* protocol # */
|
---|
361 | #endif
|
---|
362 | } PRProtoEnt;
|
---|
363 |
|
---|
364 | NSPR_API(PRStatus) PR_GetProtoByName(
|
---|
365 | const char* protocolname, char* buffer, PRInt32 bufsize, PRProtoEnt* result);
|
---|
366 |
|
---|
367 | /***********************************************************************
|
---|
368 | ** FUNCTION:
|
---|
369 | ** DESCRIPTION: PR_GetProtoByNumber()
|
---|
370 | ** Lookup a protocol entry based on protocol's number
|
---|
371 | **
|
---|
372 | ** INPUTS:
|
---|
373 | ** PRInt32 protocolnumber
|
---|
374 | ** Number assigned to the protocol.
|
---|
375 | ** char *buf A scratch buffer for the runtime to return result.
|
---|
376 | ** This buffer is allocated by the caller.
|
---|
377 | ** PRIntn bufsize Number of bytes in 'buf'. A recommnded value to
|
---|
378 | ** use is PR_NETDB_BUF_SIZE.
|
---|
379 | ** OUTPUTS:
|
---|
380 | ** PRHostEnt *PRProtoEnt
|
---|
381 | ** This structure is filled in by the runtime if
|
---|
382 | ** the function returns PR_SUCCESS. This structure
|
---|
383 | ** is allocated by the caller.
|
---|
384 | ** RETURN:
|
---|
385 | ** PRStatus PR_SUCCESS if the lookup succeeds. If it fails
|
---|
386 | ** the result will be PR_FAILURE and the reason
|
---|
387 | ** for the failure can be retrieved by PR_GetError().
|
---|
388 | ***********************************************************************/
|
---|
389 | NSPR_API(PRStatus) PR_GetProtoByNumber(
|
---|
390 | PRInt32 protocolnumber, char* buffer, PRInt32 bufsize, PRProtoEnt* result);
|
---|
391 |
|
---|
392 | /***********************************************************************
|
---|
393 | ** FUNCTION:
|
---|
394 | ** DESCRIPTION: PR_GetAddrInfoByName()
|
---|
395 | ** Lookup a host by name. Equivalent to getaddrinfo(host, NULL, ...) of
|
---|
396 | ** RFC 3493.
|
---|
397 | **
|
---|
398 | ** INPUTS:
|
---|
399 | ** char *hostname Character string defining the host name of interest
|
---|
400 | ** PRUint16 af May be PR_AF_UNSPEC or PR_AF_INET.
|
---|
401 | ** PRIntn flags May be either PR_AI_ADDRCONFIG or
|
---|
402 | ** PR_AI_ADDRCONFIG | PR_AI_NOCANONNAME. Include
|
---|
403 | ** PR_AI_NOCANONNAME to suppress the determination of
|
---|
404 | ** the canonical name corresponding to hostname.
|
---|
405 | ** RETURN:
|
---|
406 | ** PRAddrInfo* Handle to a data structure containing the results
|
---|
407 | ** of the host lookup. Use PR_EnumerateAddrInfo to
|
---|
408 | ** inspect the PRNetAddr values stored in this object.
|
---|
409 | ** When no longer needed, this handle must be destroyed
|
---|
410 | ** with a call to PR_FreeAddrInfo. If a lookup error
|
---|
411 | ** occurs, then NULL will be returned.
|
---|
412 | ***********************************************************************/
|
---|
413 | typedef struct PRAddrInfo PRAddrInfo;
|
---|
414 |
|
---|
415 | NSPR_API(PRAddrInfo*) PR_GetAddrInfoByName(
|
---|
416 | const char *hostname, PRUint16 af, PRIntn flags);
|
---|
417 |
|
---|
418 | /***********************************************************************
|
---|
419 | ** FUNCTION:
|
---|
420 | ** DESCRIPTION: PR_FreeAddrInfo()
|
---|
421 | ** Destroy the PRAddrInfo handle allocated by PR_GetAddrInfoByName().
|
---|
422 | **
|
---|
423 | ** INPUTS:
|
---|
424 | ** PRAddrInfo *addrInfo
|
---|
425 | ** The handle resulting from a successful call to
|
---|
426 | ** PR_GetAddrInfoByName().
|
---|
427 | ** RETURN:
|
---|
428 | ** void
|
---|
429 | ***********************************************************************/
|
---|
430 | NSPR_API(void) PR_FreeAddrInfo(PRAddrInfo *addrInfo);
|
---|
431 |
|
---|
432 | /***********************************************************************
|
---|
433 | ** FUNCTION:
|
---|
434 | ** DESCRIPTION: PR_EnumerateAddrInfo()
|
---|
435 | ** A stateless enumerator over a PRAddrInfo handle acquired from
|
---|
436 | ** PR_GetAddrInfoByName() to inspect the possible network addresses.
|
---|
437 | **
|
---|
438 | ** INPUTS:
|
---|
439 | ** void *enumPtr Index pointer of the enumeration. The enumeration
|
---|
440 | ** starts and ends with a value of NULL.
|
---|
441 | ** PRAddrInfo *addrInfo
|
---|
442 | ** The PRAddrInfo handle returned by a successful
|
---|
443 | ** call to PR_GetAddrInfoByName().
|
---|
444 | ** PRUint16 port The port number to be assigned as part of the
|
---|
445 | ** PRNetAddr.
|
---|
446 | ** OUTPUTS:
|
---|
447 | ** PRNetAddr *result A pointer to an address structure that will be
|
---|
448 | ** filled in by the call to the enumeration if the
|
---|
449 | ** result of the call is greater than zero.
|
---|
450 | ** RETURN:
|
---|
451 | ** void* The value that should be used for the next call
|
---|
452 | ** of the enumerator ('enumPtr'). The enumeration
|
---|
453 | ** is ended if this value is returned NULL.
|
---|
454 | ***********************************************************************/
|
---|
455 | NSPR_API(void *) PR_EnumerateAddrInfo(
|
---|
456 | void *enumPtr, const PRAddrInfo *addrInfo, PRUint16 port, PRNetAddr *result);
|
---|
457 |
|
---|
458 | /***********************************************************************
|
---|
459 | ** FUNCTION:
|
---|
460 | ** DESCRIPTION: PR_GetCanonNameFromAddrInfo()
|
---|
461 | ** Extracts the canonical name of the hostname passed to
|
---|
462 | ** PR_GetAddrInfoByName().
|
---|
463 | **
|
---|
464 | ** INPUTS:
|
---|
465 | ** PRAddrInfo *addrInfo
|
---|
466 | ** The PRAddrInfo handle returned by a successful
|
---|
467 | ** call to PR_GetAddrInfoByName().
|
---|
468 | ** RETURN:
|
---|
469 | ** const char * A const pointer to the canonical hostname stored
|
---|
470 | ** in the given PRAddrInfo handle. This pointer is
|
---|
471 | ** invalidated once the PRAddrInfo handle is destroyed
|
---|
472 | ** by a call to PR_FreeAddrInfo().
|
---|
473 | ***********************************************************************/
|
---|
474 | NSPR_API(const char *) PR_GetCanonNameFromAddrInfo(
|
---|
475 | const PRAddrInfo *addrInfo);
|
---|
476 |
|
---|
477 | /***********************************************************************
|
---|
478 | ** FUNCTIONS: PR_ntohs, PR_ntohl, PR_ntohll, PR_htons, PR_htonl, PR_htonll
|
---|
479 | **
|
---|
480 | ** DESCRIPTION: API entries for the common byte ordering routines.
|
---|
481 | **
|
---|
482 | ** PR_ntohs 16 bit conversion from network to host
|
---|
483 | ** PR_ntohl 32 bit conversion from network to host
|
---|
484 | ** PR_ntohll 64 bit conversion from network to host
|
---|
485 | ** PR_htons 16 bit conversion from host to network
|
---|
486 | ** PR_htonl 32 bit conversion from host to network
|
---|
487 | ** PR_ntonll 64 bit conversion from host to network
|
---|
488 | **
|
---|
489 | ***********************************************************************/
|
---|
490 | NSPR_API(PRUint16) PR_ntohs(PRUint16);
|
---|
491 | NSPR_API(PRUint32) PR_ntohl(PRUint32);
|
---|
492 | NSPR_API(PRUint64) PR_ntohll(PRUint64);
|
---|
493 | NSPR_API(PRUint16) PR_htons(PRUint16);
|
---|
494 | NSPR_API(PRUint32) PR_htonl(PRUint32);
|
---|
495 | NSPR_API(PRUint64) PR_htonll(PRUint64);
|
---|
496 |
|
---|
497 | PR_END_EXTERN_C
|
---|
498 |
|
---|
499 | #endif /* prnetdb_h___ */
|
---|