diff options
| author | itojun <> | 2001-11-15 04:56:15 +0000 |
|---|---|---|
| committer | itojun <> | 2001-11-15 04:56:15 +0000 |
| commit | bde591bfd444438b37f64648fb8691fd705f8088 (patch) | |
| tree | 8d25f7930ce21551cdeef7243d0d4b9203eafb04 | |
| parent | e67e7aab2d9624df4bd4c559984450972fd68d03 (diff) | |
| download | openbsd-bde591bfd444438b37f64648fb8691fd705f8088.tar.gz openbsd-bde591bfd444438b37f64648fb8691fd705f8088.tar.bz2 openbsd-bde591bfd444438b37f64648fb8691fd705f8088.zip | |
make NI_WITHSCOPEID a default (always on), to synchronize with recent 2553bis.
sync with kame.
| -rw-r--r-- | src/lib/libc/net/getnameinfo.c | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/lib/libc/net/getnameinfo.c b/src/lib/libc/net/getnameinfo.c index 9f2da6720c..0ae09ca30f 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.20 2001/11/14 02:31:57 itojun Exp $ */ | 1 | /* $OpenBSD: getnameinfo.c,v 1.21 2001/11/15 04:56:15 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 | /* |
| @@ -38,8 +38,10 @@ | |||
| 38 | * modified). ipngwg rough consensus seems to follow RFC2553. | 38 | * modified). ipngwg rough consensus seems to follow RFC2553. |
| 39 | * - What is "local" in NI_FQDN? | 39 | * - What is "local" in NI_FQDN? |
| 40 | * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other. | 40 | * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other. |
| 41 | * - (KAME extension) NI_WITHSCOPEID when called with global address, | 41 | * - (KAME extension) always attach textual scopeid (fe80::1%lo0), if |
| 42 | * and sin6_scope_id filled | 42 | * sin6_scope_id is filled - standardization status? |
| 43 | * XXX breaks backward compat for code that expects no scopeid. | ||
| 44 | * beware on merge. | ||
| 43 | */ | 45 | */ |
| 44 | 46 | ||
| 45 | #ifndef INET6 | 47 | #ifndef INET6 |
| @@ -293,30 +295,24 @@ ip6_parsenumeric(sa, addr, host, hostlen, flags) | |||
| 293 | return EAI_MEMORY; | 295 | return EAI_MEMORY; |
| 294 | strcpy(host, numaddr); | 296 | strcpy(host, numaddr); |
| 295 | 297 | ||
| 296 | #ifdef NI_WITHSCOPEID | ||
| 297 | if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { | 298 | if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { |
| 298 | if (flags & NI_WITHSCOPEID) | 299 | char zonebuf[MAXHOSTNAMELEN]; |
| 299 | { | 300 | int zonelen; |
| 300 | char scopebuf[MAXHOSTNAMELEN]; | ||
| 301 | int scopelen; | ||
| 302 | 301 | ||
| 303 | scopelen = ip6_sa2str( | 302 | zonelen = ip6_sa2str( |
| 304 | (const struct sockaddr_in6 *)(const void *)sa, | 303 | (const struct sockaddr_in6 *)(const void *)sa, |
| 305 | scopebuf, sizeof(scopebuf), 0); | 304 | zonebuf, sizeof(zonebuf), flags); |
| 306 | if (scopelen < 0) | 305 | if (zonelen < 0) |
| 307 | return EAI_MEMORY; | 306 | return EAI_MEMORY; |
| 308 | if (scopelen + 1 + numaddrlen + 1 > hostlen) | 307 | if (zonelen + 1 + numaddrlen + 1 > hostlen) |
| 309 | return EAI_MEMORY; | 308 | return EAI_MEMORY; |
| 310 | /* | 309 | |
| 311 | * construct <numeric-addr><delim><scopeid> | 310 | /* construct <numeric-addr><delim><zoneid> */ |
| 312 | */ | 311 | memcpy(host + numaddrlen + 1, zonebuf, |
| 313 | memcpy(host + numaddrlen + 1, scopebuf, | 312 | (size_t)zonelen); |
| 314 | (size_t)scopelen); | 313 | host[numaddrlen] = SCOPE_DELIMITER; |
| 315 | host[numaddrlen] = SCOPE_DELIMITER; | 314 | host[numaddrlen + 1 + zonelen] = '\0'; |
| 316 | host[numaddrlen + 1 + scopelen] = '\0'; | ||
| 317 | } | ||
| 318 | } | 315 | } |
| 319 | #endif /* NI_WITHSCOPEID */ | ||
| 320 | 316 | ||
| 321 | return 0; | 317 | return 0; |
| 322 | } | 318 | } |
