xref: /freebsd/lib/libutil++/freebsd__addrinfo_up.3 (revision 159503125826bc2d3b988921e7e85735ee09ad46)
1*15950312SJohn Baldwin.\"
2*15950312SJohn Baldwin.\" SPDX-License-Identifier: BSD-2-Clause
3*15950312SJohn Baldwin.\"
4*15950312SJohn Baldwin.\" Copyright (c) 2025 Chelsio Communications, Inc.
5*15950312SJohn Baldwin.\" Written by: John Baldwin <jhb@FreeBSD.org>
6*15950312SJohn Baldwin.\"
7*15950312SJohn Baldwin.Dd July 31, 2025
8*15950312SJohn Baldwin.Dt FREEBSD::ADDRINFO_UP 3
9*15950312SJohn Baldwin.Os
10*15950312SJohn Baldwin.Sh NAME
11*15950312SJohn Baldwin.Nm freebsd::addrinfo_up
12*15950312SJohn Baldwin.Nd std::unique_ptr specialization for lists of socket addresses
13*15950312SJohn Baldwin.Sh LIBRARY
14*15950312SJohn Baldwin.Lb libutil++
15*15950312SJohn Baldwin.Sh SYNOPSIS
16*15950312SJohn Baldwin.In libutil++.hh
17*15950312SJohn Baldwin.Ft using addrinfo_up = std::unique_ptr<addrinfo, freeaddrinfo_deleter>;
18*15950312SJohn Baldwin.Sh DESCRIPTION
19*15950312SJohn BaldwinThis class is a specialization of
20*15950312SJohn Baldwin.Vt std::unique_ptr
21*15950312SJohn Baldwinfor socket addresses returned by
22*15950312SJohn Baldwin.Xr getaddrinfo 3 .
23*15950312SJohn BaldwinWhen a list of socket addresses managed by an instance of this class is
24*15950312SJohn Baldwindisposed,
25*15950312SJohn Baldwin.Xr freeaddrinfo 3
26*15950312SJohn Baldwinis invoked to dispose of the list.
27*15950312SJohn Baldwin.Sh EXAMPLES
28*15950312SJohn Baldwin.Bd -literal -offset indent
29*15950312SJohn Baldwinfreebsd::addrinfo_up
30*15950312SJohn Baldwinresolve_address(const char *address, const char *port)
31*15950312SJohn Baldwin{
32*15950312SJohn Baldwin	struct addrinfo hints, *ai;
33*15950312SJohn Baldwin	int error;
34*15950312SJohn Baldwin
35*15950312SJohn Baldwin	memset(&hints, 0, sizeof(hints));
36*15950312SJohn Baldwin	hints.ai_family = AF_UNSPEC;
37*15950312SJohn Baldwin	hints.ai_socktype = SOCK_STREAM;
38*15950312SJohn Baldwin	error = getaddrinfo(address, port, &hints, &ai);
39*15950312SJohn Baldwin	if (error != 0)
40*15950312SJohn Baldwin		return {};
41*15950312SJohn Baldwin	return freebsd::addrinfo_up(ai);
42*15950312SJohn Baldwin}
43*15950312SJohn Baldwin.Ed
44*15950312SJohn Baldwin.Sh SEE ALSO
45*15950312SJohn Baldwin.Xr getaddrinfo 3
46