lwres_getaddrinfo.docbook revision c1a883f2e04d94e99c433b1f6cfd0c0338f4ed85
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose [<!ENTITY mdash "&#8212;">]>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose<!--
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose -
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - Permission to use, copy, modify, and distribute this software for any
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - purpose with or without fee is hereby granted, provided that the above
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - copyright notice and this permission notice appear in all copies.
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose -
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - PERFORMANCE OF THIS SOFTWARE.
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose-->
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose<!-- $Id: lwres_getaddrinfo.docbook,v 1.12 2007/01/29 23:57:22 marka Exp $ -->
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose<refentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose
225d845476b6136be9b77f528ed986bba7a7f732Simo Sorce <refentryinfo>
c8119652b17229a5aca9b110365c310a6afdce30Jakub Hrozek <date>Jun 30, 2000</date>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </refentryinfo>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refmeta>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refentrytitle>lwres_getaddrinfo</refentrytitle>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <manvolnum>3</manvolnum>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refmiscinfo>BIND9</refmiscinfo>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher </refmeta>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher <docinfo>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <copyright>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <year>2004</year>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <year>2005</year>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <year>2007</year>
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </copyright>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <copyright>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <year>2000</year>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <year>2001</year>
cbaba2f47da96c4191971bce86f03afb3f88864aSimo Sorce <year>2003</year>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <holder>Internet Software Consortium.</holder>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </copyright>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </docinfo>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refnamediv>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refname>lwres_getaddrinfo</refname>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refname>lwres_freeaddrinfo</refname>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refpurpose>socket address structure to host and service name</refpurpose>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </refnamediv>
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce <refsynopsisdiv>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <funcsynopsis>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose<funcsynopsisinfo>#include &lt;lwres/netdb.h&gt;</funcsynopsisinfo>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek<funcprototype>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <funcdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozekint
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek<function>lwres_getaddrinfo</function></funcdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <paramdef>const char *<parameter>hostname</parameter></paramdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <paramdef>const char *<parameter>servname</parameter></paramdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <paramdef>const struct addrinfo *<parameter>hints</parameter></paramdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <paramdef>struct addrinfo **<parameter>res</parameter></paramdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek </funcprototype>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek<funcprototype>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <funcdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozekvoid
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek<function>lwres_freeaddrinfo</function></funcdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <paramdef>struct addrinfo *<parameter>ai</parameter></paramdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek </funcprototype>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek</funcsynopsis>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <para>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek If the operating system does not provide a
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <type>struct addrinfo</type>,
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek the following structure is used:
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek </para>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <para><programlisting>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozekstruct addrinfo {
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose int ai_family; /* PF_xxx */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose int ai_socktype; /* SOCK_xxx */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose size_t ai_addrlen; /* length of ai_addr */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose char *ai_canonname; /* canonical name for hostname */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose struct sockaddr *ai_addr; /* binary address */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose struct addrinfo *ai_next; /* next structure in linked list */
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose};
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose</programlisting>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </para>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce </refsynopsisdiv>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refsect1>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <title>DESCRIPTION</title>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <para><function>lwres_getaddrinfo()</function>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina is used to get a list of IP addresses and port numbers for host
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>hostname</parameter> and service
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>servname</parameter>.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina The function is the lightweight resolver's implementation of
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <function>getaddrinfo()</function> as defined in RFC2133.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>hostname</parameter> and
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>servname</parameter> are pointers to null-terminated
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina strings or <type>NULL</type>.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>hostname</parameter> is either a host name or a
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina numeric host address string: a dotted decimal IPv4 address or an
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina IPv6 address. <parameter>servname</parameter> is either a
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina decimal port number or a service name as listed in
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <filename>/etc/services</filename>.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </para>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <para><parameter>hints</parameter>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina is an optional pointer to a
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>struct addrinfo</type>.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina This structure can be used to provide hints concerning the type of
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina socket
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina that the caller supports or wishes to use.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina The caller can supply the following structure elements in
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>*hints</parameter>:
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <variablelist>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <term><constant>ai_family</constant></term>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <listitem>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <para>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina The protocol family that should be used.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina When
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <constant>ai_family</constant>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina is set to
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>PF_UNSPEC</type>,
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina it means the caller will accept any protocol family supported by
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina the
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina operating system.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </para>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </listitem>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <term><constant>ai_socktype</constant></term>
eb2ec2c35742caf164b49b660b5045d08cac7623Pavel Reichl <listitem>
eb2ec2c35742caf164b49b660b5045d08cac7623Pavel Reichl <para>
eb2ec2c35742caf164b49b660b5045d08cac7623Pavel Reichl denotes the type of socket &mdash;
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina <type>SOCK_STREAM</type>,
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina <type>SOCK_DGRAM</type>
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina or
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>SOCK_RAW</type>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina &mdash; that is wanted.
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina When
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina <constant>ai_socktype</constant>
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina is zero the caller will accept any socket type.
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina </para>
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina </listitem>
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina </varlistentry>
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina <varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <term><constant>ai_protocol</constant></term>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <listitem>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <para>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina indicates which transport protocol is wanted: IPPROTO_UDP or
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina IPPROTO_TCP.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina If
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <constant>ai_protocol</constant>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina is zero the caller will accept any protocol.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </para>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </listitem>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </varlistentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <varlistentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <term><constant>ai_flags</constant></term>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <listitem>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <para>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose Flag bits.
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose If the
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <type>AI_CANONNAME</type>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose bit is set, a successful call to
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <function>lwres_getaddrinfo()</function>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose will return a null-terminated string containing the canonical
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina name
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina of the specified hostname in
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <constant>ai_canonname</constant>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina of the first
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>addrinfo</type>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina structure returned.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina Setting the
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>AI_PASSIVE</type>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina bit indicates that the returned socket address structure is
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina intended
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina for used in a call to
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <citerefentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </citerefentry>.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose In this case, if the hostname argument is a
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <type>NULL</type>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose pointer, then the IP address portion of the socket
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher address structure will be set to
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <type>INADDR_ANY</type>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher for an IPv4 address or
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>IN6ADDR_ANY_INIT</type>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina for an IPv6 address.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </para>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <para>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose When
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <constant>ai_flags</constant>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina does not set the
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <type>AI_PASSIVE</type>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose bit, the returned socket address structure will be ready
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina for use in a call to
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <citerefentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <refentrytitle>connect</refentrytitle><manvolnum>2</manvolnum>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </citerefentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina for a connection-oriented protocol or
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <citerefentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refentrytitle>connect</refentrytitle><manvolnum>2</manvolnum>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </citerefentry>,
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <citerefentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <refentrytitle>sendto</refentrytitle><manvolnum>2</manvolnum>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </citerefentry>,
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher or
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher <citerefentry>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher <refentrytitle>sendmsg</refentrytitle><manvolnum>2</manvolnum>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher </citerefentry>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher if a connectionless protocol was chosen.
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher The IP address portion of the socket address structure will be
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher set to the loopback address if
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher <parameter>hostname</parameter>
387349ae092f6dbeb8e4bca291a772695836629cStef Walter is a
387349ae092f6dbeb8e4bca291a772695836629cStef Walter <type>NULL</type>
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher pointer and
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <type>AI_PASSIVE</type>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose is not set in
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <constant>ai_flags</constant>.
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </para>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <para>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose If
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <constant>ai_flags</constant>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose is set to
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <type>AI_NUMERICHOST</type>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose it indicates that
<parameter>hostname</parameter>
should be treated as a numeric string defining an IPv4 or IPv6
address
and no name resolution should be attempted.
</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>
</refsect1>
<refsect1>
<title>RETURN VALUES</title>
<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>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
<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>
</refsect1>
</refentry><!--
- Local variables:
- mode: sgml
- End:
-->