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