From 00269a5a24d47203028aace9ab76eeeef7060321 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Fri, 5 Dec 2008 12:07:00 -0500 Subject: [PATCH] getaddrinfo.3: Document results ordering and /etc/gai.conf This patch documents the order of the getaddrinfo(3) results (RFC 3484), how should the application deal with that, mentions the extremely common cause of having multiple results per query (both IPv4 and IPv6 addresses available) and mentions /etc/gai.conf. (mtk: Minor tweaks, and note glibc version for /etc/gai.conf) Signed-off-by: Petr Baudis Signed-off-by: Michael Kerrisk --- man3/getaddrinfo.3 | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/man3/getaddrinfo.3 b/man3/getaddrinfo.3 index b3b0cce4e..2b4b533d6 100644 --- a/man3/getaddrinfo.3 +++ b/man3/getaddrinfo.3 @@ -33,10 +33,12 @@ .\" 2008-02-26, mtk; clarify discussion of NULL 'hints' argument; other .\" minor rewrites. .\" 2008-06-18, mtk: many parts rewritten +.\" 2008-12-04, Petr Baudis +.\" Describe results ordering and reference /etc/gai.conf. .\" FIXME . glibc's 2.9 NEWS file documents DCCP and UDP-lite support .\" and is SCTP support now also there? .\" -.TH GETADDRINFO 3 2008-10-28 "GNU" "Linux Programmer's Manual" +.TH GETADDRINFO 3 2008-12-04 "GNU" "Linux Programmer's Manual" .SH NAME getaddrinfo, freeaddrinfo, gai_strerror \- network address and service translation @@ -293,15 +295,28 @@ and returns a pointer to the start of the list in The items in the linked list are linked by the .I ai_next field. + There are several reasons why the linked list may have more than one .I addrinfo -structure, including: the network host is multi-homed; or the same service -is available from multiple socket protocols (one +structure, including: the network host is multi-homed, accessible +over multiple protocols (e.g. both +.BR AF_INET +and +.BR AF_INET6 ); +or the same service is available from multiple socket types (one .B SOCK_STREAM address and another .B SOCK_DGRAM address, for example). +Normally, the application should try +using the addresses in the order in which they are returned. +The sorting function used within +.BR getaddrinfo () +is defined in RFC\ 3484; the order can be tweaked for a particular +system by editing +.IR /etc/gai.conf +(available since glibc 2.5). .PP If .I hints.ai_flags @@ -558,6 +573,8 @@ The .BR gai_strerror () function translates these error codes to a human readable string, suitable for error reporting. +.SH "FILES" +.I /etc/gai.conf .SH "CONFORMING TO" POSIX.1-2001. The