lwres_getaddrinfo.docbook revision 194e2dfffa6a167b8eef0ad11864026b423a1c30
891a081e38584dfb59697349fbf0aba2c4d4e1e2Christian Maeder<!ENTITY mdash "—">]>
8f1a4a6c8c0f098e5253c03eafe50aead6e8873cChristian Maeder - Copyright (C) 2000, 2001, 2003-2005, 2007, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
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<!-- Converted by db4-upgrade version 1.0 -->
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski<refentry xmlns="http://docbook.org/ns/docbook" version="5.0">
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refentryinfo>
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <corpauthor>Internet Systems Consortium, Inc.</corpauthor>
7660d5932a1fb9677d07889714b677a059af2b2fChristian Maeder </refentryinfo>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <refentrytitle>lwres_getaddrinfo</refentrytitle>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
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 <lwres/netdb.h></funcsynopsisinfo>
0b7c8279c741857d1681160f8b4144a9430ffa7fTill Mossakowski<funcprototype>
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>
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 If the operating system does not provide a
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder the following structure is used:
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</programlisting>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </refsynopsisdiv>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refsection><info><title>DESCRIPTION</title></info>
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
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder The function is the lightweight resolver's implementation of
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <function>getaddrinfo()</function> as defined in RFC2133.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <parameter>servname</parameter> are pointers to null-terminated
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
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder is an optional pointer to a
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder This structure can be used to provide hints concerning the type of
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder that the caller supports or wishes to use.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder The caller can supply the following structure elements in
6f08007ef2919f70c396c491f349ff3e536900bbChristian Maeder <variablelist>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <term><constant>ai_family</constant></term>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder The protocol family that should be used.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder it means the caller will accept any protocol family supported by
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder operating system.
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder <term><constant>ai_socktype</constant></term>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder denotes the type of socket —
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder — that is wanted.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder is zero the caller will accept any socket type.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </varlistentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <varlistentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <term><constant>ai_protocol</constant></term>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder indicates which transport protocol is wanted: IPPROTO_UDP or
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder is zero the caller will accept any protocol.
f7d2e793728bbb7fd185e027eb9dfd7b9dd11c21Christian Maeder </varlistentry>
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder <varlistentry>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder bit is set, a successful call to
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder will return a null-terminated string containing the canonical
10f1342d686ed68712a2b25ed65fa5a18f9c3db7Christian Maeder of the specified hostname in
e7ce154edb906685b3fa7f6c0a764e18a4658068Christian Maeder structure returned.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder bit indicates that the returned socket address structure is
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for used in a call to
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <citerefentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum>
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder </citerefentry>.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder In this case, if the hostname argument is a
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder pointer, then the IP address portion of the socket
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder address structure will be set to
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for an IPv4 address or
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder for an IPv6 address.
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder does not set the
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>,
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <citerefentry>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder <refentrytitle>sendto</refentrytitle><manvolnum>2</manvolnum>
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder </citerefentry>,
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
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder is not set in
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder it indicates that
78d4b9e3558a2523c3335b1399385ac7d246f0c1Christian Maeder should be treated as a numeric string defining an IPv4 or IPv6
ee34c4e1b244e46682a84bc52224f52289bd1950Christian Maeder and no name resolution should be attempted.