d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<!--
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - Copyright (C) 2000, 2001, 2003-2005, 2007, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - This Source Code Form is subject to the terms of the Mozilla Public
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - License, v. 2.0. If a copy of the MPL was not distributed with this
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - file, You can obtain one at http://mozilla.org/MPL/2.0/.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson-->
d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews<html lang="en">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<head>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<title>lwres_getaddrinfo</title>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</head>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1"></a><div class="titlepage"></div>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <div class="refnamediv">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h2>Name</h2>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User<p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_getaddrinfo,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_freeaddrinfo
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User &#8212; socket address structure to host and service name
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <div class="refsynopsisdiv">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h2>Synopsis</h2>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <div class="funcsynopsis">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<pre class="funcsynopsisinfo">#include &lt;lwres/netdb.h&gt;</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinint
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_getaddrinfo</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>const char *<var class="pdparam">hostname</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>const char *<var class="pdparam">servname</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>const struct addrinfo *<var class="pdparam">hints</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>struct addrinfo **<var class="pdparam">res</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_freeaddrinfo</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>struct addrinfo *<var class="pdparam">ai</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If the operating system does not provide a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct addrinfo</span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the following structure is used:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <pre class="programlisting">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct addrinfo {
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson int ai_family; /* PF_xxx */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson int ai_socktype; /* SOCK_xxx */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson size_t ai_addrlen; /* length of ai_addr */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson char *ai_canonname; /* canonical name for hostname */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson struct sockaddr *ai_addr; /* binary address */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson struct addrinfo *ai_next; /* next structure in linked list */
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein};
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </div>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <div class="refsection">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.7"></a><h2>DESCRIPTION</h2>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_getaddrinfo()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is used to get a list of IP addresses and port numbers for host
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>hostname</code></em> and service
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>servname</code></em>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The function is the lightweight resolver's implementation of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">getaddrinfo()</code> as defined in RFC2133.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>hostname</code></em> and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>servname</code></em> are pointers to null-terminated
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein strings or <span class="type">NULL</span>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>hostname</code></em> is either a host name or a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein numeric host address string: a dotted decimal IPv4 address or an
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein IPv6 address. <em class="parameter"><code>servname</code></em> is either a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein decimal port number or a service name as listed in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename">/etc/services</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><em class="parameter"><code>hints</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is an optional pointer to a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct addrinfo</span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein This structure can be used to provide hints concerning the type of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein socket
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein that the caller supports or wishes to use.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The caller can supply the following structure elements in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*hints</code></em>:
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="variablelist"><dl class="variablelist">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">ai_family</code></span></dt>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User<dd>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The protocol family that should be used.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_family</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is set to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">PF_UNSPEC</span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein it means the caller will accept any protocol family supported by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein operating system.
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </dd>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">ai_socktype</code></span></dt>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User<dd>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein denotes the type of socket &#8212;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">SOCK_STREAM</span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">SOCK_DGRAM</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">SOCK_RAW</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein &#8212; that is wanted.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_socktype</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is zero the caller will accept any socket type.
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </dd>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">ai_protocol</code></span></dt>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User<dd>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein indicates which transport protocol is wanted: IPPROTO_UDP or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein IPPROTO_TCP.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_protocol</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is zero the caller will accept any protocol.
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </dd>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">ai_flags</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dd>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Flag bits.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">AI_CANONNAME</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bit is set, a successful call to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_getaddrinfo()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein will return a null-terminated string containing the canonical
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein name
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein of the specified hostname in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_canonname</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein of the first
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">addrinfo</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein structure returned.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Setting the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">AI_PASSIVE</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bit indicates that the returned socket address structure is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein intended
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for used in a call to
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">bind</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein In this case, if the hostname argument is a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">NULL</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pointer, then the IP address portion of the socket
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein address structure will be set to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">INADDR_ANY</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for an IPv4 address or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">IN6ADDR_ANY_INIT</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for an IPv6 address.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_flags</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein does not set the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">AI_PASSIVE</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bit, the returned socket address structure will be ready
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for use in a call to
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">connect</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for a connection-oriented protocol or
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">connect</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">sendto</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein or
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">sendmsg</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if a connectionless protocol was chosen.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The IP address portion of the socket address structure will be
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein set to the loopback address if
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>hostname</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">NULL</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pointer and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">AI_PASSIVE</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is not set in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_flags</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_flags</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is set to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">AI_NUMERICHOST</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein it indicates that
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>hostname</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein should be treated as a numeric string defining an IPv4 or IPv6
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein address
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and no name resolution should be attempted.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </dd>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</dl></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein All other elements of the <span class="type">struct addrinfo</span> passed
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein via <em class="parameter"><code>hints</code></em> must be zero.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A <em class="parameter"><code>hints</code></em> of <span class="type">NULL</span> is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein treated as if
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the caller provided a <span class="type">struct addrinfo</span> initialized to zero
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein with <code class="constant">ai_family</code>set to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">PF_UNSPEC</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein After a successful call to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_getaddrinfo()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*res</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is a pointer to a linked list of one or more
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">addrinfo</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein structures.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Each
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct addrinfo</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in this list cn be processed by following
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_next</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pointer, until a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">NULL</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein pointer is encountered.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The three members
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_family</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_socktype</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_protocol</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in each
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein returned
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">addrinfo</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein structure contain the corresponding arguments for a call to
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">socket</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein For each
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">addrinfo</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein structure in the list, the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_addr</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein member points to a filled-in socket address structure of length
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">ai_addrlen</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein All of the information returned by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_getaddrinfo()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is dynamically allocated: the addrinfo structures, and the socket
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein address structures and canonical host name strings pointed to by the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">addrinfo</code>structures.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Memory allocated for the dynamically allocated structures created by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein a successful call to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_getaddrinfo()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is released by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_freeaddrinfo()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>ai</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is a pointer to a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct addrinfo</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein created by a call to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_getaddrinfo()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </div>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <div class="refsection">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.8"></a><h2>RETURN VALUES</h2>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_getaddrinfo()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein returns zero on success or one of the error codes listed in
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">gai_strerror</span>(3)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if an error occurs. If both <em class="parameter"><code>hostname</code></em> and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>servname</code></em> are <span class="type">NULL</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_getaddrinfo()</code> returns
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="errorcode">EAI_NONAME</span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </div>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <div class="refsection">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.9"></a><h2>SEE ALSO</h2>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">lwres</span>(3)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">lwres_getaddrinfo</span>(3)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">lwres_freeaddrinfo</span>(3)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">lwres_gai_strerror</span>(3)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">RFC2133</span>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">getservbyname</span>(3)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">bind</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">connect</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">sendto</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">sendmsg</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="citerefentry">
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <span class="refentrytitle">socket</span>(2)
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User </div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div></body>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</html>