diff options
| author | itojun <> | 2001-11-14 02:31:57 +0000 |
|---|---|---|
| committer | itojun <> | 2001-11-14 02:31:57 +0000 |
| commit | e67e7aab2d9624df4bd4c559984450972fd68d03 (patch) | |
| tree | 2d0f5eef51af2746cd7160c6fd280dc9b31ca742 /src/lib/libc | |
| parent | 5f2b327040542968eef8d66df6399c69ca2ccd06 (diff) | |
| download | openbsd-e67e7aab2d9624df4bd4c559984450972fd68d03.tar.gz openbsd-e67e7aab2d9624df4bd4c559984450972fd68d03.tar.bz2 openbsd-e67e7aab2d9624df4bd4c559984450972fd68d03.zip | |
sync with kame better. open some renaming #defines (ENI_xx).
Diffstat (limited to 'src/lib/libc')
| -rw-r--r-- | src/lib/libc/net/getnameinfo.c | 69 |
1 files changed, 27 insertions, 42 deletions
diff --git a/src/lib/libc/net/getnameinfo.c b/src/lib/libc/net/getnameinfo.c index 0dee5a6c4c..9f2da6720c 100644 --- a/src/lib/libc/net/getnameinfo.c +++ b/src/lib/libc/net/getnameinfo.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: getnameinfo.c,v 1.19 2001/08/20 02:23:33 itojun Exp $ */ | 1 | /* $OpenBSD: getnameinfo.c,v 1.20 2001/11/14 02:31:57 itojun Exp $ */ |
| 2 | /* $KAME: getnameinfo.c,v 1.45 2000/09/25 22:43:56 itojun Exp $ */ | 2 | /* $KAME: getnameinfo.c,v 1.45 2000/09/25 22:43:56 itojun Exp $ */ |
| 3 | 3 | ||
| 4 | /* | 4 | /* |
| @@ -57,12 +57,7 @@ | |||
| 57 | #include <string.h> | 57 | #include <string.h> |
| 58 | #include <stddef.h> | 58 | #include <stddef.h> |
| 59 | 59 | ||
| 60 | #define SUCCESS 0 | 60 | static const struct afd { |
| 61 | #define ANY 0 | ||
| 62 | #define YES 1 | ||
| 63 | #define NO 0 | ||
| 64 | |||
| 65 | static struct afd { | ||
| 66 | int a_af; | 61 | int a_af; |
| 67 | int a_addrlen; | 62 | int a_addrlen; |
| 68 | int a_socklen; | 63 | int a_socklen; |
| @@ -89,15 +84,6 @@ static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *, | |||
| 89 | static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); | 84 | static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); |
| 90 | #endif | 85 | #endif |
| 91 | 86 | ||
| 92 | /* 2553bis: use EAI_xx for getnameinfo */ | ||
| 93 | #define ENI_NOSOCKET EAI_FAIL /*XXX*/ | ||
| 94 | #define ENI_NOSERVNAME EAI_NONAME | ||
| 95 | #define ENI_NOHOSTNAME EAI_NONAME | ||
| 96 | #define ENI_MEMORY EAI_MEMORY | ||
| 97 | #define ENI_SYSTEM EAI_SYSTEM | ||
| 98 | #define ENI_FAMILY EAI_FAMILY | ||
| 99 | #define ENI_SALEN EAI_FAMILY | ||
| 100 | |||
| 101 | int | 87 | int |
| 102 | getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | 88 | getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) |
| 103 | const struct sockaddr *sa; | 89 | const struct sockaddr *sa; |
| @@ -108,7 +94,7 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 108 | size_t servlen; | 94 | size_t servlen; |
| 109 | int flags; | 95 | int flags; |
| 110 | { | 96 | { |
| 111 | struct afd *afd; | 97 | const struct afd *afd; |
| 112 | struct servent *sp; | 98 | struct servent *sp; |
| 113 | struct hostent *hp; | 99 | struct hostent *hp; |
| 114 | u_short port; | 100 | u_short port; |
| @@ -120,10 +106,10 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 120 | char numaddr[512]; | 106 | char numaddr[512]; |
| 121 | 107 | ||
| 122 | if (sa == NULL) | 108 | if (sa == NULL) |
| 123 | return ENI_NOSOCKET; | 109 | return EAI_FAIL; |
| 124 | 110 | ||
| 125 | if (sa->sa_len != salen) | 111 | if (sa->sa_len != salen) |
| 126 | return ENI_SALEN; | 112 | return EAI_FAIL; |
| 127 | 113 | ||
| 128 | family = sa->sa_family; | 114 | family = sa->sa_family; |
| 129 | for (i = 0; afdl[i].a_af; i++) | 115 | for (i = 0; afdl[i].a_af; i++) |
| @@ -131,12 +117,12 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 131 | afd = &afdl[i]; | 117 | afd = &afdl[i]; |
| 132 | goto found; | 118 | goto found; |
| 133 | } | 119 | } |
| 134 | return ENI_FAMILY; | 120 | return EAI_FAMILY; |
| 135 | 121 | ||
| 136 | found: | 122 | found: |
| 137 | if (salen != afd->a_socklen) | 123 | if (salen != afd->a_socklen) |
| 138 | return ENI_SALEN; | 124 | return EAI_FAIL; |
| 139 | 125 | ||
| 140 | /* network byte order */ | 126 | /* network byte order */ |
| 141 | port = ((const struct sockinet *)sa)->si_port; | 127 | port = ((const struct sockinet *)sa)->si_port; |
| 142 | addr = (const char *)sa + afd->a_off; | 128 | addr = (const char *)sa + afd->a_off; |
| @@ -145,8 +131,8 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 145 | /* | 131 | /* |
| 146 | * do nothing in this case. | 132 | * do nothing in this case. |
| 147 | * in case you are wondering if "&&" is more correct than | 133 | * in case you are wondering if "&&" is more correct than |
| 148 | * "||" here: RFC2553 says that serv == NULL OR servlen == 0 | 134 | * "||" here: rfc2553bis-03 says that serv == NULL OR |
| 149 | * means that the caller does not want the result. | 135 | * servlen == 0 means that the caller does not want the result. |
| 150 | */ | 136 | */ |
| 151 | } else { | 137 | } else { |
| 152 | if (flags & NI_NUMERICSERV) | 138 | if (flags & NI_NUMERICSERV) |
| @@ -157,12 +143,12 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 157 | } | 143 | } |
| 158 | if (sp) { | 144 | if (sp) { |
| 159 | if (strlen(sp->s_name) + 1 > servlen) | 145 | if (strlen(sp->s_name) + 1 > servlen) |
| 160 | return ENI_MEMORY; | 146 | return EAI_MEMORY; |
| 161 | strcpy(serv, sp->s_name); | 147 | strcpy(serv, sp->s_name); |
| 162 | } else { | 148 | } else { |
| 163 | snprintf(numserv, sizeof(numserv), "%d", ntohs(port)); | 149 | snprintf(numserv, sizeof(numserv), "%d", ntohs(port)); |
| 164 | if (strlen(numserv) + 1 > servlen) | 150 | if (strlen(numserv) + 1 > servlen) |
| 165 | return ENI_MEMORY; | 151 | return EAI_MEMORY; |
| 166 | strcpy(serv, numserv); | 152 | strcpy(serv, numserv); |
| 167 | } | 153 | } |
| 168 | } | 154 | } |
| @@ -207,15 +193,15 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 207 | /* | 193 | /* |
| 208 | * do nothing in this case. | 194 | * do nothing in this case. |
| 209 | * in case you are wondering if "&&" is more correct than | 195 | * in case you are wondering if "&&" is more correct than |
| 210 | * "||" here: RFC2553 says that host == NULL OR hostlen == 0 | 196 | * "||" here: rfc2553bis-03 says that host == NULL or |
| 211 | * means that the caller does not want the result. | 197 | * hostlen == 0 means that the caller does not want the result. |
| 212 | */ | 198 | */ |
| 213 | } else if (flags & NI_NUMERICHOST) { | 199 | } else if (flags & NI_NUMERICHOST) { |
| 214 | int numaddrlen; | 200 | int numaddrlen; |
| 215 | 201 | ||
| 216 | /* NUMERICHOST and NAMEREQD conflicts with each other */ | 202 | /* NUMERICHOST and NAMEREQD conflicts with each other */ |
| 217 | if (flags & NI_NAMEREQD) | 203 | if (flags & NI_NAMEREQD) |
| 218 | return ENI_NOHOSTNAME; | 204 | return EAI_NONAME; |
| 219 | 205 | ||
| 220 | switch(afd->a_af) { | 206 | switch(afd->a_af) { |
| 221 | #ifdef INET6 | 207 | #ifdef INET6 |
| @@ -232,10 +218,10 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 232 | default: | 218 | default: |
| 233 | if (inet_ntop(afd->a_af, addr, numaddr, sizeof(numaddr)) | 219 | if (inet_ntop(afd->a_af, addr, numaddr, sizeof(numaddr)) |
| 234 | == NULL) | 220 | == NULL) |
| 235 | return ENI_SYSTEM; | 221 | return EAI_SYSTEM; |
| 236 | numaddrlen = strlen(numaddr); | 222 | numaddrlen = strlen(numaddr); |
| 237 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ | 223 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ |
| 238 | return ENI_MEMORY; | 224 | return EAI_MEMORY; |
| 239 | strcpy(host, numaddr); | 225 | strcpy(host, numaddr); |
| 240 | break; | 226 | break; |
| 241 | } | 227 | } |
| @@ -257,12 +243,12 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 257 | } | 243 | } |
| 258 | #endif | 244 | #endif |
| 259 | if (strlen(hp->h_name) + 1 > hostlen) { | 245 | if (strlen(hp->h_name) + 1 > hostlen) { |
| 260 | return ENI_MEMORY; | 246 | return EAI_MEMORY; |
| 261 | } | 247 | } |
| 262 | strcpy(host, hp->h_name); | 248 | strcpy(host, hp->h_name); |
| 263 | } else { | 249 | } else { |
| 264 | if (flags & NI_NAMEREQD) | 250 | if (flags & NI_NAMEREQD) |
| 265 | return ENI_NOHOSTNAME; | 251 | return EAI_NONAME; |
| 266 | switch(afd->a_af) { | 252 | switch(afd->a_af) { |
| 267 | #ifdef INET6 | 253 | #ifdef INET6 |
| 268 | case AF_INET6: | 254 | case AF_INET6: |
| @@ -279,12 +265,12 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
| 279 | default: | 265 | default: |
| 280 | if (inet_ntop(afd->a_af, addr, host, | 266 | if (inet_ntop(afd->a_af, addr, host, |
| 281 | hostlen) == NULL) | 267 | hostlen) == NULL) |
| 282 | return ENI_SYSTEM; | 268 | return EAI_SYSTEM; |
| 283 | break; | 269 | break; |
| 284 | } | 270 | } |
| 285 | } | 271 | } |
| 286 | } | 272 | } |
| 287 | return SUCCESS; | 273 | return(0); |
| 288 | } | 274 | } |
| 289 | 275 | ||
| 290 | #ifdef INET6 | 276 | #ifdef INET6 |
| @@ -299,13 +285,12 @@ ip6_parsenumeric(sa, addr, host, hostlen, flags) | |||
| 299 | int numaddrlen; | 285 | int numaddrlen; |
| 300 | char numaddr[512]; | 286 | char numaddr[512]; |
| 301 | 287 | ||
| 302 | if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) | 288 | if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL) |
| 303 | == NULL) | 289 | return EAI_SYSTEM; |
| 304 | return ENI_SYSTEM; | ||
| 305 | 290 | ||
| 306 | numaddrlen = strlen(numaddr); | 291 | numaddrlen = strlen(numaddr); |
| 307 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ | 292 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ |
| 308 | return ENI_MEMORY; | 293 | return EAI_MEMORY; |
| 309 | strcpy(host, numaddr); | 294 | strcpy(host, numaddr); |
| 310 | 295 | ||
| 311 | #ifdef NI_WITHSCOPEID | 296 | #ifdef NI_WITHSCOPEID |
| @@ -319,9 +304,9 @@ ip6_parsenumeric(sa, addr, host, hostlen, flags) | |||
| 319 | (const struct sockaddr_in6 *)(const void *)sa, | 304 | (const struct sockaddr_in6 *)(const void *)sa, |
| 320 | scopebuf, sizeof(scopebuf), 0); | 305 | scopebuf, sizeof(scopebuf), 0); |
| 321 | if (scopelen < 0) | 306 | if (scopelen < 0) |
| 322 | return ENI_MEMORY; | 307 | return EAI_MEMORY; |
| 323 | if (scopelen + 1 + numaddrlen + 1 > hostlen) | 308 | if (scopelen + 1 + numaddrlen + 1 > hostlen) |
| 324 | return ENI_MEMORY; | 309 | return EAI_MEMORY; |
| 325 | /* | 310 | /* |
| 326 | * construct <numeric-addr><delim><scopeid> | 311 | * construct <numeric-addr><delim><scopeid> |
| 327 | */ | 312 | */ |
