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. */ |
