diff options
Diffstat (limited to 'gl/netdb.in.h')
-rw-r--r-- | gl/netdb.in.h | 116 |
1 files changed, 63 insertions, 53 deletions
diff --git a/gl/netdb.in.h b/gl/netdb.in.h index 363206d3..73db46a5 100644 --- a/gl/netdb.in.h +++ b/gl/netdb.in.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* Provide a netdb.h header file for systems lacking it (read: MinGW). | 1 | /* Provide a netdb.h header file for systems lacking it (read: MinGW). |
2 | Copyright (C) 2008 Free Software Foundation, Inc. | 2 | Copyright (C) 2008-2010 Free Software Foundation, Inc. |
3 | Written by Simon Josefsson. | 3 | Written by Simon Josefsson. |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
@@ -22,11 +22,11 @@ | |||
22 | 22 | ||
23 | #ifndef _GL_NETDB_H | 23 | #ifndef _GL_NETDB_H |
24 | 24 | ||
25 | #if @HAVE_NETDB_H@ | 25 | #if __GNUC__ >= 3 |
26 | |||
27 | # if __GNUC__ >= 3 | ||
28 | @PRAGMA_SYSTEM_HEADER@ | 26 | @PRAGMA_SYSTEM_HEADER@ |
29 | # endif | 27 | #endif |
28 | |||
29 | #if @HAVE_NETDB_H@ | ||
30 | 30 | ||
31 | /* The include_next requires a split double-inclusion guard. */ | 31 | /* The include_next requires a split double-inclusion guard. */ |
32 | # @INCLUDE_NEXT@ @NEXT_NETDB_H@ | 32 | # @INCLUDE_NEXT@ @NEXT_NETDB_H@ |
@@ -39,6 +39,8 @@ | |||
39 | /* Get netdb.h definitions such as struct hostent for MinGW. */ | 39 | /* Get netdb.h definitions such as struct hostent for MinGW. */ |
40 | #include <sys/socket.h> | 40 | #include <sys/socket.h> |
41 | 41 | ||
42 | /* The definition of _GL_ARG_NONNULL is copied here. */ | ||
43 | |||
42 | /* Declarations for a platform that lacks <netdb.h>, or where it is | 44 | /* Declarations for a platform that lacks <netdb.h>, or where it is |
43 | incomplete. */ | 45 | incomplete. */ |
44 | 46 | ||
@@ -49,53 +51,59 @@ | |||
49 | /* Structure to contain information about address of a service provider. */ | 51 | /* Structure to contain information about address of a service provider. */ |
50 | struct addrinfo | 52 | struct addrinfo |
51 | { | 53 | { |
52 | int ai_flags; /* Input flags. */ | 54 | int ai_flags; /* Input flags. */ |
53 | int ai_family; /* Protocol family for socket. */ | 55 | int ai_family; /* Protocol family for socket. */ |
54 | int ai_socktype; /* Socket type. */ | 56 | int ai_socktype; /* Socket type. */ |
55 | int ai_protocol; /* Protocol for socket. */ | 57 | int ai_protocol; /* Protocol for socket. */ |
56 | socklen_t ai_addrlen; /* Length of socket address. */ | 58 | socklen_t ai_addrlen; /* Length of socket address. */ |
57 | struct sockaddr *ai_addr; /* Socket address for socket. */ | 59 | struct sockaddr *ai_addr; /* Socket address for socket. */ |
58 | char *ai_canonname; /* Canonical name for service location. */ | 60 | char *ai_canonname; /* Canonical name for service location. */ |
59 | struct addrinfo *ai_next; /* Pointer to next in list. */ | 61 | struct addrinfo *ai_next; /* Pointer to next in list. */ |
60 | }; | 62 | }; |
61 | # endif | 63 | # endif |
62 | 64 | ||
63 | /* Possible values for `ai_flags' field in `addrinfo' structure. */ | 65 | /* Possible values for `ai_flags' field in `addrinfo' structure. */ |
64 | # ifndef AI_PASSIVE | 66 | # ifndef AI_PASSIVE |
65 | # define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */ | 67 | # define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */ |
66 | # endif | 68 | # endif |
67 | # ifndef AI_CANONNAME | 69 | # ifndef AI_CANONNAME |
68 | # define AI_CANONNAME 0x0002 /* Request for canonical name. */ | 70 | # define AI_CANONNAME 0x0002 /* Request for canonical name. */ |
69 | # endif | 71 | # endif |
70 | # ifndef AI_NUMERICSERV | 72 | # ifndef AI_NUMERICSERV |
71 | # define AI_NUMERICSERV 0x0400 /* Don't use name resolution. */ | 73 | # define AI_NUMERICSERV 0x0400 /* Don't use name resolution. */ |
72 | # endif | 74 | # endif |
73 | 75 | ||
74 | # if 0 | 76 | # if 0 |
75 | /* The commented out definitions below are not yet implemented in the | 77 | # define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */ |
76 | GNULIB getaddrinfo() replacement, so are not yet needed and may, in fact, | 78 | # endif |
77 | cause conflicts on systems with a getaddrinfo() function which does not | ||
78 | define them. | ||
79 | 79 | ||
80 | If they are restored, be sure to protect the definitions with #ifndef. */ | 80 | /* These symbolic constants are required to be present by POSIX, but |
81 | # define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */ | 81 | our getaddrinfo replacement doesn't use them (yet). Setting them |
82 | # define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */ | 82 | to 0 on systems that doesn't have them avoids causing problems for |
83 | # define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */ | 83 | system getaddrinfo implementations that would be confused by |
84 | # define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose | 84 | unknown values. */ |
85 | returned address type.. */ | 85 | # ifndef AI_V4MAPPED |
86 | # endif /* 0 */ | 86 | # define AI_V4MAPPED 0 /* 0x0008: IPv4 mapped addresses are acceptable. */ |
87 | # endif | ||
88 | # ifndef AI_ALL | ||
89 | # define AI_ALL 0 /* 0x0010: Return IPv4 mapped and IPv6 addresses. */ | ||
90 | # endif | ||
91 | # ifndef AI_ADDRCONFIG | ||
92 | # define AI_ADDRCONFIG 0 /* 0x0020: Use configuration of this host to choose | ||
93 | returned address type. */ | ||
94 | # endif | ||
87 | 95 | ||
88 | /* Error values for `getaddrinfo' function. */ | 96 | /* Error values for `getaddrinfo' function. */ |
89 | # ifndef EAI_BADFLAGS | 97 | # ifndef EAI_BADFLAGS |
90 | # define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */ | 98 | # define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */ |
91 | # define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ | 99 | # define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ |
92 | # define EAI_AGAIN -3 /* Temporary failure in name resolution. */ | 100 | # define EAI_AGAIN -3 /* Temporary failure in name resolution. */ |
93 | # define EAI_FAIL -4 /* Non-recoverable failure in name res. */ | 101 | # define EAI_FAIL -4 /* Non-recoverable failure in name res. */ |
94 | # define EAI_NODATA -5 /* No address associated with NAME. */ | 102 | # define EAI_NODATA -5 /* No address associated with NAME. */ |
95 | # define EAI_FAMILY -6 /* `ai_family' not supported. */ | 103 | # define EAI_FAMILY -6 /* `ai_family' not supported. */ |
96 | # define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ | 104 | # define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ |
97 | # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ | 105 | # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ |
98 | # define EAI_MEMORY -10 /* Memory allocation failure. */ | 106 | # define EAI_MEMORY -10 /* Memory allocation failure. */ |
99 | # endif | 107 | # endif |
100 | 108 | ||
101 | /* Since EAI_NODATA is deprecated by RFC3493, some systems (at least | 109 | /* Since EAI_NODATA is deprecated by RFC3493, some systems (at least |
@@ -107,15 +115,15 @@ struct addrinfo | |||
107 | 115 | ||
108 | # ifndef EAI_OVERFLOW | 116 | # ifndef EAI_OVERFLOW |
109 | /* Not defined on mingw32 and Haiku. */ | 117 | /* Not defined on mingw32 and Haiku. */ |
110 | # define EAI_OVERFLOW -12 /* Argument buffer overflow. */ | 118 | # define EAI_OVERFLOW -12 /* Argument buffer overflow. */ |
111 | # endif | 119 | # endif |
112 | # ifndef EAI_ADDRFAMILY | 120 | # ifndef EAI_ADDRFAMILY |
113 | /* Not defined on mingw32. */ | 121 | /* Not defined on mingw32. */ |
114 | # define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ | 122 | # define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ |
115 | # endif | 123 | # endif |
116 | # ifndef EAI_SYSTEM | 124 | # ifndef EAI_SYSTEM |
117 | /* Not defined on mingw32. */ | 125 | /* Not defined on mingw32. */ |
118 | # define EAI_SYSTEM -11 /* System error returned in `errno'. */ | 126 | # define EAI_SYSTEM -11 /* System error returned in `errno'. */ |
119 | # endif | 127 | # endif |
120 | 128 | ||
121 | # if 0 | 129 | # if 0 |
@@ -124,12 +132,12 @@ struct addrinfo | |||
124 | 132 | ||
125 | If they are restored, be sure to protect the definitions with #ifndef. */ | 133 | If they are restored, be sure to protect the definitions with #ifndef. */ |
126 | # ifndef EAI_INPROGRESS | 134 | # ifndef EAI_INPROGRESS |
127 | # define EAI_INPROGRESS -100 /* Processing request in progress. */ | 135 | # define EAI_INPROGRESS -100 /* Processing request in progress. */ |
128 | # define EAI_CANCELED -101 /* Request canceled. */ | 136 | # define EAI_CANCELED -101 /* Request canceled. */ |
129 | # define EAI_NOTCANCELED -102 /* Request not canceled. */ | 137 | # define EAI_NOTCANCELED -102 /* Request not canceled. */ |
130 | # define EAI_ALLDONE -103 /* All requests done. */ | 138 | # define EAI_ALLDONE -103 /* All requests done. */ |
131 | # define EAI_INTR -104 /* Interrupted by a signal. */ | 139 | # define EAI_INTR -104 /* Interrupted by a signal. */ |
132 | # define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ | 140 | # define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ |
133 | # endif | 141 | # endif |
134 | # endif | 142 | # endif |
135 | 143 | ||
@@ -139,16 +147,17 @@ struct addrinfo | |||
139 | For more details, see the POSIX:2001 specification | 147 | For more details, see the POSIX:2001 specification |
140 | <http://www.opengroup.org/susv3xsh/getaddrinfo.html>. */ | 148 | <http://www.opengroup.org/susv3xsh/getaddrinfo.html>. */ |
141 | extern int getaddrinfo (const char *restrict nodename, | 149 | extern int getaddrinfo (const char *restrict nodename, |
142 | const char *restrict servname, | 150 | const char *restrict servname, |
143 | const struct addrinfo *restrict hints, | 151 | const struct addrinfo *restrict hints, |
144 | struct addrinfo **restrict res); | 152 | struct addrinfo **restrict res) |
153 | _GL_ARG_NONNULL ((4)); | ||
145 | # endif | 154 | # endif |
146 | 155 | ||
147 | # if !@HAVE_DECL_FREEADDRINFO@ | 156 | # if !@HAVE_DECL_FREEADDRINFO@ |
148 | /* Free `addrinfo' structure AI including associated storage. | 157 | /* Free `addrinfo' structure AI including associated storage. |
149 | For more details, see the POSIX:2001 specification | 158 | For more details, see the POSIX:2001 specification |
150 | <http://www.opengroup.org/susv3xsh/getaddrinfo.html>. */ | 159 | <http://www.opengroup.org/susv3xsh/getaddrinfo.html>. */ |
151 | extern void freeaddrinfo (struct addrinfo *ai); | 160 | extern void freeaddrinfo (struct addrinfo *ai) _GL_ARG_NONNULL ((1)); |
152 | # endif | 161 | # endif |
153 | 162 | ||
154 | # if !@HAVE_DECL_GAI_STRERROR@ | 163 | # if !@HAVE_DECL_GAI_STRERROR@ |
@@ -162,10 +171,11 @@ extern const char *gai_strerror (int ecode); | |||
162 | /* Convert socket address to printable node and service names. | 171 | /* Convert socket address to printable node and service names. |
163 | For more details, see the POSIX:2001 specification | 172 | For more details, see the POSIX:2001 specification |
164 | <http://www.opengroup.org/susv3xsh/getnameinfo.html>. */ | 173 | <http://www.opengroup.org/susv3xsh/getnameinfo.html>. */ |
165 | extern int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen, | 174 | extern int getnameinfo (const struct sockaddr *restrict sa, socklen_t salen, |
166 | char *restrict node, socklen_t nodelen, | 175 | char *restrict node, socklen_t nodelen, |
167 | char *restrict service, socklen_t servicelen, | 176 | char *restrict service, socklen_t servicelen, |
168 | int flags); | 177 | int flags) |
178 | _GL_ARG_NONNULL ((1)); | ||
169 | # endif | 179 | # endif |
170 | 180 | ||
171 | /* Possible flags for getnameinfo. */ | 181 | /* Possible flags for getnameinfo. */ |