getconf: don't include xpg4 bits, gcc7 includes xpg6 bits for us
[unleashed.git] / share / man / man3xnet / freeaddrinfo.3xnet
blob4ba4993592a3379b3b6b6136b6390b0579514372
1 .\"
2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
3 .\" permission to reproduce portions of its copyrighted documentation.
4 .\" Original documentation from The Open Group can be obtained online at
5 .\" http://www.opengroup.org/bookstore/.
6 .\"
7 .\" The Institute of Electrical and Electronics Engineers and The Open
8 .\" Group, have given us permission to reprint portions of their
9 .\" documentation.
10 .\"
11 .\" In the following statement, the phrase ``this text'' refers to portions
12 .\" of the system documentation.
13 .\"
14 .\" Portions of this text are reprinted and reproduced in electronic form
15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
16 .\" Standard for Information Technology -- Portable Operating System
17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6,
18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
19 .\" Engineers, Inc and The Open Group.  In the event of any discrepancy
20 .\" between these versions and the original IEEE and The Open Group
21 .\" Standard, the original IEEE and The Open Group Standard is the referee
22 .\" document.  The original Standard can be obtained online at
23 .\" http://www.opengroup.org/unix/online.html.
24 .\"
25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Copyright (c) 2001, The IEEE and The Open Group.  All Rights Reserved.
44 .\" Portions Copyright (c) 2003, Sun Microsystems, Inc. All Rights Reserved.
45 .\"
46 .TH FREEADDRINFO 3XNET "Feb 25, 2017"
47 .SH NAME
48 freeaddrinfo, getaddrinfo \- get address information
49 .SH SYNOPSIS
50 .LP
51 .nf
52 \fBcc\fR [ \fIflag\fR ... ] \fIfile\fR ... [ \fIlibrary\fR ... ]
53 #include <sys/socket.h>
54 #include <netdb.h>
56 \fBvoid\fR \fBfreeaddrinfo\fR(\fBstruct addrinfo *\fR\fIai\fR);
57 .fi
59 .LP
60 .nf
61 \fBint\fR \fBgetaddrinfo\fR(\fBconst char *restrict\fR \fInodename\fR,
62      \fBconst char *restrict\fR \fIservname\fR, \fBconst struct addrinfo *restrict\fR \fIhints\fR,
63      \fBstruct addrinfo **restrict\fR \fIres\fR);
64 .fi
66 .SH DESCRIPTION
67 .LP
68 The \fBfreeaddrinfo()\fR function frees one or more \fBaddrinfo\fR structures
69 returned by \fBgetaddrinfo()\fR, along with any additional storage associated
70 with those structures. If the \fBai_next\fR member of the structure is not
71 null, the entire list of structures is freed. The \fBfreeaddrinfo()\fR function
72 supports the freeing of arbitrary sublists of an \fBaddrinfo\fR list originally
73 returned by \fBgetaddrinfo()\fR.
74 .sp
75 .LP
76 The \fBgetaddrinfo()\fR function translates the name of a service location (for
77 example, a host name) and/or a service name and returns a set of socket
78 addresses and associated information to be used in creating a socket with which
79 to address the specified service.
80 .sp
81 .LP
82 The \fInodename\fR and \fIservname\fR arguments are either null pointers or
83 pointers to null-terminated strings. One or both of these two arguments are
84 supplied by the application as a non-null pointer.
85 .sp
86 .LP
87 The format of a valid name depends on the address family or families. If a
88 specific family is not given and the name could be interpreted as valid within
89 multiple supported families, the implementation attempts to resolve the name in
90 all supported families and, in absence of errors, one or more results are
91 returned.
92 .sp
93 .LP
94 If the \fInodename\fR argument is not null, it can be a descriptive name or can
95 be an address string. If the specified address family is \fBAF_INET\fR,
96 \fBAF_INET6\fR, or \fBAF_UNSPEC\fR, valid descriptive names include host names.
97 If the specified address family is \fBAF_INET\fR or \fBAF_UNSPEC\fR, address
98 strings using Internet standard dot notation as specified in
99 \fBinet_addr\fR(3XNET) are valid.
102 If the specified address family is \fBAF_INET6\fR or \fBAF_UNSPEC\fR, standard
103 IPv6 text forms described in \fBinet_ntop\fR(3XNET) are valid.
106 If \fInodename\fR is not null, the requested service location is named by
107 \fInodename\fR; otherwise, the requested service location is local to the
108 caller.
111 If \fIservname\fR is null, the call returns network-level addresses for the
112 specified \fInodename\fR. If \fIservname\fR is not null, it is a
113 null-terminated character string identifying the requested service. This string
114 can be either a descriptive name or a numeric representation suitable for use
115 with the address family or families. If the specified address family is
116 \fBAF_INET\fR, \fBAF_INET6\fR, or \fBAF_UNSPEC\fR, the service can be specified
117 as a string specifying a decimal port number.
120 If the \fIhints\fR argument is not null, it refers to a structure containing
121 input values that can direct the operation by providing options and by limiting
122 the returned information to a specific socket type, address family and/or
123 protocol. In this \fIhints\fR structure every member other than \fBai_flags\fR,
124 \fBai_family\fR , \fBai_socktype\fR, and \fBai_protocol\fR is set to 0 or a
125 null pointer. A value of \fBAF_UNSPEC\fR for \fBai_family\fR means that the
126 caller accepts any address family. A value of 0 for \fBai_socktype\fR means
127 that the caller accepts any socket type. A value of 0 for \fBai_protocol\fR
128 means that the caller accepts any protocol. If \fIhints\fR is a null pointer,
129 the behavior is as if it referred to a structure containing the value 0 for the
130 \fBai_flags\fR, \fBai_socktype\fR, and \fBai_protocol\fR members, and
131 \fBAF_UNSPEC\fR for the \fBai_family\fR member.
134 The \fBai_flags\fR member to which the \fIhints\fR parameter points is set to 0
135 or be the bitwise-inclusive OR of one or more of the values \fBAI_PASSIVE\fR,
136 \fBAI_CANONNAME\fR, \fBAI_NUMERICHOST\fR, and \fBAI_NUMERICSERV\fR.
139 If the \fBAI_PASSIVE\fR flag is specified, the returned address information is
140 suitable for use in binding a socket for accepting incoming connections for the
141 specified service. In this case, if the \fInodename\fR argument is null, then
142 the IP address portion of the socket address structure is set to
143 \fBINADDR_ANY\fR for an IPv4 address or \fBIN6ADDR_ANY_INIT\fR for an IPv6
144 address. If the \fBAI_PASSIVE\fR flag is not specified, the returned address
145 information is suitable for a call to \fBconnect\fR(3XNET) (for a
146 connection-mode protocol) or for a call to \fBconnect()\fR,
147 \fBsendto\fR(3XNET), or \fBsendmsg\fR(3XNET) (for a connectionless protocol).
148 In this case, if the \fInodename\fR argument is null, then the IP address
149 portion of the socket address structure is set to the loopback address.
152 If the \fBAI_CANONNAME\fR flag is specified and the \fInodename\fR argument is
153 not null, the function attempts to determine the canonical name corresponding
154 to \fInodename\fR (for example, if \fInodename\fR is an alias or shorthand
155 notation for a complete name).
158 If the \fBAI_NUMERICHOST\fR flag is specified, then a non-null \fInodename\fR
159 string supplied is a numeric host address string. Otherwise, an
160 \fBEAI_NONAME\fR error is returned. This flag prevents any type of name
161 resolution service (for example, the DNS) from being invoked.
164 If the \fBAI_NUMERICSERV\fR flag is specified, then a non-null \fIservname\fR
165 string supplied is a numeric port string. Otherwise, an \fBEAI_NONAME\fR error
166 is returned. This flag prevents any type of name resolution service from being
167 invoked.
170 If the \fBAI_V4MAPPED\fR flag is specified along with an \fBai_family\fR of
171 \fBAF_INET6\fR, then \fBgetaddrinfo()\fR returns IPv4-mapped IPv6 addresses on
172 finding no matching IPv6 addresses (\fBai_addrlen\fR is 16). The
173 \fBAI_V4MAPPED\fR flag is ignored unless \fBai_family\fR equals \fBAF_INET6\fR.
174 If the \fBAI_ALL\fR flag is used with the \fBAI_V4MAPPED\fR flag, then
175 \fBgetaddrinfo()\fR returns all matching IPv6 and IPv4 addresses. The
176 \fBAI_ALL\fR flag without the \fBAI_V4MAPPED\fR flag is ignored.
179 The \fBai_socktype\fR member to which argument hints points specifies the
180 socket type for the service, as defined in \fBsocket\fR(3XNET). If a specific
181 socket type is not given (for example, a value of 0) and the service name could
182 be interpreted as valid with multiple supported socket types, the
183 implementation attempts to resolve the service name for all supported socket
184 types and, in the absence of errors, all possible results are returned. A
185 non-zero socket type value limits the returned information to values with the
186 specified socket type.
189 If the \fBai_family\fR member to which hints points has the value
190 \fBAF_UNSPEC\fR, addresses are returned for use with any address family that
191 can be used with the specified \fInodename\fR and/or \fIservname\fR. Otherwise,
192 addresses are returned for use only with the specified address family. If
193 \fBai_family\fR is not \fBAF_UNSPEC\fR and \fBai_protocol\fR is not 0, then
194 addresses are returned for use only with the specified address family and
195 protocol; the value of \fBai_protocol\fR is interpreted as in a call to the
196 \fBsocket()\fR function with the corresponding values of \fBai_family\fR and
197 \fBai_protocol\fR.
198 .SH RETURN VALUES
200 A 0 return value for \fBgetaddrinfo()\fR indicates successful completion; a
201 non-zero return value indicates failure. The possible values for the failures
202 are listed in the ERRORS section.
205 Upon successful return of \fBgetaddrinfo()\fR, the location to which res points
206 refers to a linked list of \fBaddrinfo\fR structures, each of which specifies a
207 socket address and information for use in creating a socket with which to use
208 that socket address. The list includes at least one \fBaddrinfo\fR structure.
209 The \fBai_next\fR member of each structure contains a pointer to the next
210 structure on the list, or a null pointer if it is the last structure on the
211 list. Each structure on the list includes values for use with a call to the
212 socket function, and a socket address for use with the connect function or, if
213 the \fBAI_PASSIVE\fR flag was specified, for use with the \fBbind\fR(3XNET)
214 function. The \fBai_family\fR , \fBai_socktype\fR, and \fBai_protocol\fR
215 members are usable as the arguments to the \fBsocket()\fR function to create a
216 socket suitable for use with the returned address. The \fBai_addr\fR and
217 \fBai_addrlen\fR members are usable as the arguments to the \fBconnect()\fR or
218 \fBbind()\fR functions with such a socket, according to the \fBAI_PASSIVE\fR
219 flag.
222 If \fInodename\fR is not null, and if requested by the \fBAI_CANONNAME\fR flag,
223 the \fBai_canonname\fR member of the first returned \fBaddrinfo\fR structure
224 points to a null-terminated string containing the canonical name corresponding
225 to the input \fInodename\fR. If the canonical name is not available, then
226 \fBai_canonname\fR refers to the \fInodename\fR argument or a string with the
227 same contents. The contents of the \fBai_flags\fR member of the returned
228 structures are undefined.
231 All members in socket address structures returned by \fBgetaddrinfo()\fR that
232 are not filled in through an explicit argument (for example,
233 \fBsin6_flowinfo\fR) are set to 0, making it easier to compare socket address
234 structures.
235 .SH ERRORS
237 The \fBgetaddrinfo()\fR function will fail if:
239 .ne 2
241 \fB\fBEAI_AGAIN\fR\fR
243 .RS 16n
244 The name could not be resolved at this time. Future attempts might succeed.
248 .ne 2
250 \fB\fBEAI_BADFLAGS\fR\fR
252 .RS 16n
253 The \fBai_flags\fR member of the \fBaddrinfo\fR structure had an invalid value.
257 .ne 2
259 \fB\fBEAI_FAIL\fR\fR
261 .RS 16n
262 A non-recoverable error occurred when attempting to resolve the name.
266 .ne 2
268 \fB\fBEAI_FAMILY\fR\fR
270 .RS 16n
271 The address family was not recognized.
275 .ne 2
277 \fB\fBEAI_MEMORY\fR\fR
279 .RS 16n
280 There was a memory allocation failure when trying to allocate storage for the
281 return value.
285 .ne 2
287 \fB\fBEAI_NONAME\fR\fR
289 .RS 16n
290 he name does not resolve for the supplied parameters.  Neither \fInodename\fR
291 nor \fIservname\fR were supplied. At least one of these must be supplied.
295 .ne 2
297 \fB\fBEAI_SERVICE\fR\fR
299 .RS 16n
300 The service passed was not recognized for the specified socket type.
304 .ne 2
306 \fB\fBEAI_SOCKTYPE\fR\fR
308 .RS 16n
309 The intended socket type was not recognized.
313 .ne 2
315 \fB\fBEAI_SYSTEM\fR\fR
317 .RS 16n
318 A system error occurred. The error code can be found in \fBerrno\fR.
322 .ne 2
324 \fB\fBEAI_OVERFLOW\fR\fR
326 .RS 16n
327 An argument buffer overflowed.
330 .SH USAGE
332 If the caller handles only TCP and not UDP, for example, then the
333 \fBai_protocol\fR member of the \fIhints\fR structure should be set to
334 \fBIPPROTO_TCP\fR when \fBgetaddrinfo()\fR is called.
337 If the caller handles only IPv4 and not IPv6, then the \fBai_family\fR member
338 of the \fIhints\fR structure should be set to \fBAF_INET\fR when
339 \fBgetaddrinfo()\fR is called.
340 .SH ATTRIBUTES
342 See \fBattributes\fR(5) for descriptions of the following attributes:
347 box;
348 c | c
349 l | l .
350 ATTRIBUTE TYPE  ATTRIBUTE VALUE
352 Interface Stability     Standard
354 MT-Level        MT-Safe
357 .SH SEE ALSO
359 \fBconnect\fR(3XNET), \fBgai_strerror\fR(3XNET), \fBgethostbyname\fR(3XNET),
360 \fBgetnameinfo\fR(3XNET), \fBgetservbyname\fR(3XNET), \fBinet_addr\fR(3XNET),
361 \fBinet_ntop\fR(3XNET), \fBsocket\fR(3XNET), \fBattributes\fR(5),
362 \fBstandards\fR(5)