xref: /openbsd/lib/libc/net/gai_strerror.c (revision 4cfece93)
1 /*	$OpenBSD: gai_strerror.c,v 1.8 2015/09/14 07:38:38 guenther Exp $	*/
2 
3 /*
4  * Copyright (c) 1997-1999, Craig Metz, All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. All advertising materials mentioning features or use of this software
15  *    must display the following acknowledgement:
16  *      This product includes software developed by Craig Metz and
17  *      by other contributors.
18  * 4. Neither the name of the author nor the names of contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  */
34 
35 /* gai_strerror() v1.38 */
36 
37 #include <sys/types.h>
38 #include <netdb.h>
39 #include <errno.h>
40 
41 const char *
42 gai_strerror(int errnum)
43 {
44 	switch (errnum) {
45 	case 0:
46 		return "no error";
47 	case EAI_BADFLAGS:
48 		return "invalid value for ai_flags";
49 	case EAI_NONAME:
50 		return "name or service is not known";
51 	case EAI_AGAIN:
52 		return "temporary failure in name resolution";
53 	case EAI_FAIL:
54 		return "non-recoverable failure in name resolution";
55 	case EAI_NODATA:
56 		return "no address associated with name";
57 	case EAI_FAMILY:
58 		return "ai_family not supported";
59 	case EAI_SOCKTYPE:
60 		return "ai_socktype not supported";
61 	case EAI_SERVICE:
62 		return "service not supported for ai_socktype";
63 	case EAI_ADDRFAMILY:
64 		return "address family for name not supported";
65 	case EAI_MEMORY:
66 		return "memory allocation failure";
67 	case EAI_SYSTEM:
68 		return "system error";
69 	case EAI_BADHINTS:
70 		return "invalid value for hints";
71 	case EAI_PROTOCOL:
72 		return "resolved protocol is unknown";
73 	case EAI_OVERFLOW:
74 		return "argument buffer overflow";
75 	default:
76 		return "unknown/invalid error";
77 	}
78 }
79 DEF_WEAK(gai_strerror);
80