lwres_getaddrinfo.docbook revision 194e2dfffa6a167b8eef0ad11864026b423a1c30
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder<!DOCTYPE book [
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder<!ENTITY mdash "&#8212;">]>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder<!--
8f1a4a6c8c0f098e5253c03eafe50aead6e8873cChristian Maeder - Copyright (C) 2000, 2001, 2003-2005, 2007, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski -
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder - This Source Code Form is subject to the terms of the Mozilla Public
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder - License, v. 2.0. If a copy of the MPL was not distributed with this
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder - file, You can obtain one at http://mozilla.org/MPL/2.0/.
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski-->
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski<!-- Converted by db4-upgrade version 1.0 -->
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski<refentry xmlns="http://docbook.org/ns/docbook" version="5.0">
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <info>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <date>2007-06-18</date>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski </info>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refentryinfo>
d1126d58419412635564085406d3779325b33ae0Till Mossakowski <corpname>ISC</corpname>
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <corpauthor>Internet Systems Consortium, Inc.</corpauthor>
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder </refentryinfo>
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refmeta>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refentrytitle>lwres_getaddrinfo</refentrytitle>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <manvolnum>3</manvolnum>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refmiscinfo>BIND9</refmiscinfo>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning </refmeta>
e8d782e6e650b71a2b0ee8461fd8d9fa31525591Christian Maeder
80664cc18425d67cd71be80f27f882fa16e43848Christian Maeder <docinfo>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <copyright>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <year>2000</year>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <year>2001</year>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <year>2003</year>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <year>2004</year>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <year>2005</year>
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <year>2007</year>
e1839fb37a3a2ccd457464cb0dcc5efd466dbe22Christian Maeder <year>2014</year>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <year>2015</year>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning <year>2016</year>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder </copyright>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski </docinfo>
0b2340d1ef7d0998e4b0c321021be942c6b67652Christian Maeder
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refnamediv>
0b2340d1ef7d0998e4b0c321021be942c6b67652Christian Maeder <refname>lwres_getaddrinfo</refname>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refname>lwres_freeaddrinfo</refname>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refpurpose>socket address structure to host and service name</refpurpose>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </refnamediv>
2b4130336e941b7d01c78a6da55449a4c6eca609Till Mossakowski <refsynopsisdiv>
bd5ff898eef380d414edd0e8e392da280d35e047Christian Maeder <funcsynopsis>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder<funcsynopsisinfo>#include &lt;lwres/netdb.h&gt;</funcsynopsisinfo>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski<funcprototype>
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder <funcdef>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maederint
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder<function>lwres_getaddrinfo</function></funcdef>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <paramdef>const char *<parameter>hostname</parameter></paramdef>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning <paramdef>const char *<parameter>servname</parameter></paramdef>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning <paramdef>const struct addrinfo *<parameter>hints</parameter></paramdef>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning <paramdef>struct addrinfo **<parameter>res</parameter></paramdef>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning </funcprototype>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning<funcprototype>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning <funcdef>
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowskivoid
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder<function>lwres_freeaddrinfo</function></funcdef>
2dfb9a95c5586f73abda1d0f369d6d154b159452Sonja Gröning <paramdef>struct addrinfo *<parameter>ai</parameter></paramdef>
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder </funcprototype>
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder</funcsynopsis>
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <para>
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder If the operating system does not provide a
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>struct addrinfo</type>,
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder the following structure is used:
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </para>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <para><programlisting>
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maederstruct addrinfo {
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder int ai_family; /* PF_xxx */
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder int ai_socktype; /* SOCK_xxx */
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder size_t ai_addrlen; /* length of ai_addr */
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder char *ai_canonname; /* canonical name for hostname */
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder struct sockaddr *ai_addr; /* binary address */
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder struct addrinfo *ai_next; /* next structure in linked list */
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder};
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder</programlisting>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </para>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </refsynopsisdiv>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refsection><info><title>DESCRIPTION</title></info>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder <para><function>lwres_getaddrinfo()</function>
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder is used to get a list of IP addresses and port numbers for host
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>hostname</parameter> and service
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder <parameter>servname</parameter>.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder The function is the lightweight resolver's implementation of
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <function>getaddrinfo()</function> as defined in RFC2133.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>hostname</parameter> and
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>servname</parameter> are pointers to null-terminated
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder strings or <type>NULL</type>.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>hostname</parameter> is either a host name or a
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder numeric host address string: a dotted decimal IPv4 address or an
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder IPv6 address. <parameter>servname</parameter> is either a
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder decimal port number or a service name as listed in
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <filename>/etc/services</filename>.
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder </para>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <para><parameter>hints</parameter>
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder is an optional pointer to a
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <type>struct addrinfo</type>.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder This structure can be used to provide hints concerning the type of
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder socket
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder that the caller supports or wishes to use.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder The caller can supply the following structure elements in
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <parameter>*hints</parameter>:
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <variablelist>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <term><constant>ai_family</constant></term>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <listitem>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <para>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder The protocol family that should be used.
8731f7b93b26083dc34a2c0937cd6493b42f2c2cTill Mossakowski When
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <constant>ai_family</constant>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder is set to
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <type>PF_UNSPEC</type>,
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder it means the caller will accept any protocol family supported by
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder the
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder operating system.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </para>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </listitem>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <term><constant>ai_socktype</constant></term>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <listitem>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <para>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder denotes the type of socket &mdash;
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>SOCK_STREAM</type>,
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>SOCK_DGRAM</type>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder or
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>SOCK_RAW</type>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder &mdash; that is wanted.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder When
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <constant>ai_socktype</constant>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder is zero the caller will accept any socket type.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </para>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </listitem>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </varlistentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <varlistentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <term><constant>ai_protocol</constant></term>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <listitem>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <para>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder indicates which transport protocol is wanted: IPPROTO_UDP or
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder IPPROTO_TCP.
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder If
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder <constant>ai_protocol</constant>
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder is zero the caller will accept any protocol.
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder </para>
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder </listitem>
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder </varlistentry>
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder <varlistentry>
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder <term><constant>ai_flags</constant></term>
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder <listitem>
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder <para>
e1839fb37a3a2ccd457464cb0dcc5efd466dbe22Christian Maeder Flag bits.
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder If the
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <type>AI_CANONNAME</type>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder bit is set, a successful call to
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <function>lwres_getaddrinfo()</function>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder will return a null-terminated string containing the canonical
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder name
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder of the specified hostname in
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <constant>ai_canonname</constant>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder of the first
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder <type>addrinfo</type>
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder structure returned.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder Setting the
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>AI_PASSIVE</type>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder bit indicates that the returned socket address structure is
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder intended
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for used in a call to
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <citerefentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </citerefentry>.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder In this case, if the hostname argument is a
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>NULL</type>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder pointer, then the IP address portion of the socket
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder address structure will be set to
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>INADDR_ANY</type>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for an IPv4 address or
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <type>IN6ADDR_ANY_INIT</type>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for an IPv6 address.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </para>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <para>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder When
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <constant>ai_flags</constant>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder does not set the
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>AI_PASSIVE</type>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder bit, the returned socket address structure will be ready
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for use in a call to
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <citerefentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <refentrytitle>connect</refentrytitle><manvolnum>2</manvolnum>
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder </citerefentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for a connection-oriented protocol or
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <citerefentry>
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder <refentrytitle>connect</refentrytitle><manvolnum>2</manvolnum>
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder </citerefentry>,
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <citerefentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refentrytitle>sendto</refentrytitle><manvolnum>2</manvolnum>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </citerefentry>,
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder or
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <citerefentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refentrytitle>sendmsg</refentrytitle><manvolnum>2</manvolnum>
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder </citerefentry>
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder if a connectionless protocol was chosen.
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder The IP address portion of the socket address structure will be
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder set to the loopback address if
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>hostname</parameter>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder is a
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <type>NULL</type>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder pointer and
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <type>AI_PASSIVE</type>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder is not set in
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <constant>ai_flags</constant>.
fc8c6570c7b4ee13f375eb607bed2290438573bfChristian Maeder </para>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <para>
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder If
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder <constant>ai_flags</constant>
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder is set to
03fc25805985563b679dd75c31a6e05287c1632eChristian Maeder <type>AI_NUMERICHOST</type>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder it indicates that
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>hostname</parameter>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder should be treated as a numeric string defining an IPv4 or IPv6
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder address
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder and no name resolution should be attempted.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
All other elements of the <type>struct addrinfo</type> passed
via <parameter>hints</parameter> must be zero.
</para>
<para>
A <parameter>hints</parameter> of <type>NULL</type> is
treated as if
the caller provided a <type>struct addrinfo</type> initialized to zero
with <constant>ai_family</constant>set to
<constant>PF_UNSPEC</constant>.
</para>
<para>
After a successful call to
<function>lwres_getaddrinfo()</function>,
<parameter>*res</parameter>
is a pointer to a linked list of one or more
<type>addrinfo</type>
structures.
Each
<type>struct addrinfo</type>
in this list cn be processed by following
the
<constant>ai_next</constant>
pointer, until a
<type>NULL</type>
pointer is encountered.
The three members
<constant>ai_family</constant>,
<constant>ai_socktype</constant>,
and
<constant>ai_protocol</constant>
in each
returned
<type>addrinfo</type>
structure contain the corresponding arguments for a call to
<citerefentry>
<refentrytitle>socket</refentrytitle><manvolnum>2</manvolnum>
</citerefentry>.
For each
<type>addrinfo</type>
structure in the list, the
<constant>ai_addr</constant>
member points to a filled-in socket address structure of length
<constant>ai_addrlen</constant>.
</para>
<para>
All of the information returned by
<function>lwres_getaddrinfo()</function>
is dynamically allocated: the addrinfo structures, and the socket
address structures and canonical host name strings pointed to by the
<constant>addrinfo</constant>structures.
Memory allocated for the dynamically allocated structures created by
a successful call to
<function>lwres_getaddrinfo()</function>
is released by
<function>lwres_freeaddrinfo()</function>.
<parameter>ai</parameter>
is a pointer to a
<type>struct addrinfo</type>
created by a call to
<function>lwres_getaddrinfo()</function>.
</para>
</refsection>
<refsection><info><title>RETURN VALUES</title></info>
<para><function>lwres_getaddrinfo()</function>
returns zero on success or one of the error codes listed in
<citerefentry>
<refentrytitle>gai_strerror</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>
if an error occurs. If both <parameter>hostname</parameter> and
<parameter>servname</parameter> are <type>NULL</type>
<function>lwres_getaddrinfo()</function> returns
<errorcode>EAI_NONAME</errorcode>.
</para>
</refsection>
<refsection><info><title>SEE ALSO</title></info>
<para><citerefentry>
<refentrytitle>lwres</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>lwres_getaddrinfo</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>lwres_freeaddrinfo</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>lwres_gai_strerror</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>RFC2133</refentrytitle>
</citerefentry>,
<citerefentry>
<refentrytitle>getservbyname</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>connect</refentrytitle><manvolnum>2</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>sendto</refentrytitle><manvolnum>2</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>sendmsg</refentrytitle><manvolnum>2</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>socket</refentrytitle><manvolnum>2</manvolnum>
</citerefentry>.
</para>
</refsection>
</refentry>