gai_strerror() - Update string error messages according to RFC 3493.

Error messages in gai_strerror(3) vary largely among OSs.

For new software we largely replaced the obsoleted EAI_NONAME and
with EAI_NODATA but we never updated the corresponding message to better
match the intended use. We also have references to ai_flags and ai_family
which are not very descriptive for non-developer end users.

Bring new new error messages based on informational RFC 3493, which has
obsoleted RFC 2553, and make them consistent among the header adn
manpage.

MFC after:	1 month
Differentical Revision:	D18630
This commit is contained in:
Pedro F. Giffuni 2018-12-23 18:15:48 +00:00
parent 2686f69ed4
commit 09ed804717
3 changed files with 34 additions and 37 deletions

View File

@ -159,24 +159,24 @@ struct addrinfo {
#define NO_ADDRESS NO_DATA /* no address, look for MX record */
/*
* Error return codes from getaddrinfo()
* Error return codes from gai_strerror(3), see RFC 3493.
*/
#if 0
/* obsoleted */
/* Obsoleted on RFC 2553bis-02 */
#define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
#endif
#define EAI_AGAIN 2 /* temporary failure in name resolution */
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
#define EAI_AGAIN 2 /* name could not be resolved at this time */
#define EAI_BADFLAGS 3 /* flags parameter had an invalid value */
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
#define EAI_FAMILY 5 /* ai_family not supported */
#define EAI_FAMILY 5 /* address family was recognized */
#define EAI_MEMORY 6 /* memory allocation failure */
#if 0
/* obsoleted */
/* Obsoleted on RFC 2553bis-02 */
#define EAI_NODATA 7 /* no address associated with hostname */
#endif
#define EAI_NONAME 8 /* hostname nor servname provided, or not known */
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
#define EAI_NONAME 8 /* name does not resolve */
#define EAI_SERVICE 9 /* service not recognized for socket type */
#define EAI_SOCKTYPE 10 /* intended socket type was not recognized */
#define EAI_SYSTEM 11 /* system error returned in errno */
#define EAI_BADHINTS 12 /* invalid value for hints */
#define EAI_PROTOCOL 13 /* resolved protocol is unknown */

View File

@ -18,7 +18,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd May 21, 2006
.Dd December 23, 2018
.Dt GAI_STRERROR 3
.Os
.Sh NAME
@ -44,38 +44,30 @@ The following error codes and their meaning are defined in
.Pp
.Bl -tag -width ".Dv EAI_BADFLAGS" -offset indent -compact
.It Dv EAI_AGAIN
temporary failure in name resolution
Name could not be resolved at this time
.It Dv EAI_BADFLAGS
invalid value for
.Fa ai_flags
flags parameter had an invalid value
.It Dv EAI_BADHINTS
invalid value for
.Fa hints
.It Dv EAI_FAIL
non-recoverable failure in name resolution
Non-recoverable failure in name resolution
.It Dv EAI_FAMILY
.Fa ai_family
not supported
Address family was not recognized
.It Dv EAI_MEMORY
memory allocation failure
Memory allocation failure
.It Dv EAI_NONAME
.Fa hostname
or
.Fa servname
not provided, or not known
Name does not resolve
.It Dv EAI_OVERFLOW
argument buffer overflow
.It Dv EAI_PROTOCOL
resolved protocol is unknown
Resolved protocol is unknown
.It Dv EAI_SERVICE
.Fa servname
not supported for
.Fa ai_socktype
Service was not recognized for socket type
.It Dv EAI_SOCKTYPE
.Fa ai_socktype
not supported
Intended socket type was not recognized
.It Dv EAI_SYSTEM
system error returned in
System error returned in
.Va errno
.El
.Sh RETURN VALUES
@ -90,3 +82,8 @@ is out of range, an implementation-specific error message string is returned.
.Sh SEE ALSO
.Xr getaddrinfo 3 ,
.Xr getnameinfo 3
.Sh STANDARDS
.Bl -tag -width ".It RFC 2743"
.It RFC 3493
Basic Socket Interface Extensions for IPv6
.El

View File

@ -45,19 +45,19 @@ __FBSDID("$FreeBSD$");
#include "un-namespace.h"
/* Entries EAI_ADDRFAMILY (1) and EAI_NODATA (7) are obsoleted, but left */
/* for backward compatibility with userland code prior to 2553bis-02 */
/* for backwards compatibility with userland code prior to RFC2553bis-02 */
static const char *ai_errlist[] = {
"Success", /* 0 */
"Address family for hostname not supported", /* 1 */
"Temporary failure in name resolution", /* EAI_AGAIN */
"Invalid value for ai_flags", /* EAI_BADFLAGS */
"Address family for hostname not supported", /* 1: Obsolete */
"Name could not be resolved at this time", /* EAI_AGAIN */
"Flags parameter had an invalid value", /* EAI_BADFLAGS */
"Non-recoverable failure in name resolution", /* EAI_FAIL */
"ai_family not supported", /* EAI_FAMILY */
"Address family not recognized", /* EAI_FAMILY */
"Memory allocation failure", /* EAI_MEMORY */
"No address associated with hostname", /* 7 */
"hostname nor servname provided, or not known", /* EAI_NONAME */
"servname not supported for ai_socktype", /* EAI_SERVICE */
"ai_socktype not supported", /* EAI_SOCKTYPE */
"No address associated with hostname", /* 7: Obsolete*/
"Name does not resolve", /* EAI_NONAME */
"Service was not recognized for socket type", /* EAI_SERVICE */
"Intended socket type was not recognized", /* EAI_SOCKTYPE */
"System error returned in errno", /* EAI_SYSTEM */
"Invalid value for hints", /* EAI_BADHINTS */
"Resolved protocol is unknown", /* EAI_PROTOCOL */