summaryrefslogtreecommitdiff
path: root/net/pchar/patches/patch-aa
blob: d20fc0e775a212a8d1f09b9c80d5508cf264ad8e (plain)
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)";
 }
 
 //