]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/sendmail/libsm/inet6_ntop.c
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / sendmail / libsm / inet6_ntop.c
1 /*
2  * Copyright (c) 2013 Proofpoint, Inc. and its suppliers.
3  *      All rights reserved.
4  *
5  * By using this file, you agree to the terms and conditions set
6  * forth in the LICENSE file which can be found at the top level of
7  * the sendmail distribution.
8  *
9  */
10
11 #include <sm/gen.h>
12 SM_RCSID("@(#)$Id: inet6_ntop.c,v 1.2 2013-11-22 20:51:43 ca Exp $")
13
14 #if NETINET6
15 # include <sm/conf.h>
16 # include <sm/types.h>
17 # include <sm/io.h>
18 # include <sm/string.h>
19 # include <netinet/in.h>
20
21 /*
22 **  SM_INET6_NTOP -- convert IPv6 address to ASCII string (uncompressed)
23 **
24 **      Parameters:
25 **              ipv6 -- IPv6 address
26 **              dst -- ASCII representation of address (output)
27 **              len -- length of dst
28 **
29 **      Returns:
30 **              error: NULL
31 */
32
33 char *
34 sm_inet6_ntop(ipv6, dst, len)
35         const void *ipv6;
36         char *dst;
37         size_t len;
38 {
39         SM_UINT16 *u16;
40         int r;
41
42         u16 = (SM_UINT16 *)ipv6;
43         r = sm_snprintf(dst, len,
44                 "%x:%x:%x:%x:%x:%x:%x:%x"
45                         , htons(u16[0])
46                         , htons(u16[1])
47                         , htons(u16[2])
48                         , htons(u16[3])
49                         , htons(u16[4])
50                         , htons(u16[5])
51                         , htons(u16[6])
52                         , htons(u16[7])
53                 );
54         if (r > 0)
55                 return dst;
56         return NULL;
57 }
58 #endif /* NETINET6 */