1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
$NetBSD: patch-aa,v 1.3 2000/05/27 08:46:58 itojun Exp $
Index: PctestIpv6.cc
===================================================================
RCS file: /cvsroot/apps/pchar/PctestIpv6.cc,v
retrieving revision 1.1.1.1
retrieving revision 1.3
diff -u -r1.1.1.1 -r1.3
--- PctestIpv6.cc 2000/05/27 08:18:36 1.1.1.1
+++ PctestIpv6.cc 2000/05/27 08:41:33 1.3
@@ -210,28 +210,28 @@
//
char *PctestIpv6::GetName(void *a)
{
- struct addrinfo *host, hints;
- char *h_name;
- int error_num;
+ static char hbuf[NI_MAXHOST];
+ struct sockaddr_in6 sin6;
+ int niflags;
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = PF_INET6;
- getaddrinfo((char *) a, NULL, &hints, &host);
+ memset(&sin6, 0, sizeof(sin6));
+ sin6.sin6_family = AF_INET6;
+#ifdef HAVE_SOCKADDR_SA_LEN
+ sin6.sin6_len = sizeof(struct sockaddr_in6);
+#endif
+ memcpy(&sin6.sin6_addr, a, sizeof(sin6.sin6_addr));
+ /* XXX scope */
- if (host) {
-
- h_name = host->ai_canonname;
- /*
- * XXX We don't free the addrinfo, since we return the canonname field.
- */
-
- /* freeaddrinfo(host); */
- return h_name;
- }
- else {
- return (GetPrintableAddress(a));
- }
-
+#if 0
+ niflags = NumericFlag ? NI_NUMERICHOST : 0;
+#else
+ niflags = NI_NUMERICHOST;
+#endif
+ if (getnameinfo((struct sockaddr *)&sin6, sizeof(struct sockaddr_in6),
+ hbuf, sizeof(hbuf), NULL, 0, niflags) == 0) {
+ return hbuf;
+ } else
+ return "(invalid)";
}
//
|