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 "—">]>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose - Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
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 - 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<!-- $Id: lwres_getaddrinfo.docbook,v 1.12 2007/01/29 23:57:22 marka Exp $ -->
225d845476b6136be9b77f528ed986bba7a7f732Simo Sorce <refentryinfo>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </refentryinfo>
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </copyright>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </copyright>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refnamediv>
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 <lwres/netdb.h></funcsynopsisinfo>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek<funcprototype>
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<function>lwres_freeaddrinfo</function></funcdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek <paramdef>struct addrinfo *<parameter>ai</parameter></paramdef>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek </funcprototype>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek</funcsynopsis>
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek If the operating system does not provide a
c0bca1722d6f9dfb654ad78397be70f79ff39af1Jakub Hrozek the following structure is used:
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</programlisting>
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce </refsynopsisdiv>
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 The function is the lightweight resolver's implementation of
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <function>getaddrinfo()</function> as defined in RFC2133.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <parameter>servname</parameter> are pointers to null-terminated
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 is an optional pointer to a
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina This structure can be used to provide hints concerning the type of
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 <variablelist>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina The protocol family that should be used.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina it means the caller will accept any protocol family supported by
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina operating system.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <varlistentry>
eb2ec2c35742caf164b49b660b5045d08cac7623Pavel Reichl denotes the type of socket —
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina — that is wanted.
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina is zero the caller will accept any socket type.
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina </varlistentry>
721241198c369596c4f13445c70f227b199fdcd0Pavel Březina <varlistentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina indicates which transport protocol is wanted: IPPROTO_UDP or
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina is zero the caller will accept any protocol.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </varlistentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <varlistentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose bit is set, a successful call to
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose will return a null-terminated string containing the canonical
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina of the specified hostname in
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina structure returned.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina bit indicates that the returned socket address structure is
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina for used in a call to
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <citerefentry>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose <refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum>
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose </citerefentry>.
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose In this case, if the hostname argument is a
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose pointer, then the IP address portion of the socket
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher address structure will be set to
1b474ef7011f4bf9ce4aac85dbc9827a9486d5ebStephen Gallagher for an IPv4 address or
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina for an IPv6 address.
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina does not set the
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 <citerefentry>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina <refentrytitle>sendto</refentrytitle><manvolnum>2</manvolnum>
ffb83ee934f6ea1d9077ab601530436eff2d20e4Pavel Březina </citerefentry>,
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
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose is not set in
16ac0d6e148b1e07e579d47de1da7ac541447bd2Sumit Bose it indicates that