xref: /freebsd-src/contrib/sendmail/libsm/inet6_ntop.c (revision ee7b0571c2c18bdec848ed2044223cc88db29bd8)
15dd76dd0SGregory Neil Shapiro /*
25dd76dd0SGregory Neil Shapiro  * Copyright (c) 2013 Proofpoint, Inc. and its suppliers.
35dd76dd0SGregory Neil Shapiro  *      All rights reserved.
45dd76dd0SGregory Neil Shapiro  *
55dd76dd0SGregory Neil Shapiro  * By using this file, you agree to the terms and conditions set
65dd76dd0SGregory Neil Shapiro  * forth in the LICENSE file which can be found at the top level of
75dd76dd0SGregory Neil Shapiro  * the sendmail distribution.
85dd76dd0SGregory Neil Shapiro  *
95dd76dd0SGregory Neil Shapiro  */
105dd76dd0SGregory Neil Shapiro 
115dd76dd0SGregory Neil Shapiro #include <sm/gen.h>
12*4313cc83SGregory Neil Shapiro SM_RCSID("@(#)$Id: inet6_ntop.c,v 1.2 2013-11-22 20:51:43 ca Exp $")
135dd76dd0SGregory Neil Shapiro 
145dd76dd0SGregory Neil Shapiro #if NETINET6
155dd76dd0SGregory Neil Shapiro # include <sm/conf.h>
165dd76dd0SGregory Neil Shapiro # include <sm/types.h>
175dd76dd0SGregory Neil Shapiro # include <sm/io.h>
185dd76dd0SGregory Neil Shapiro # include <sm/string.h>
195dd76dd0SGregory Neil Shapiro # include <netinet/in.h>
205dd76dd0SGregory Neil Shapiro 
215dd76dd0SGregory Neil Shapiro /*
225dd76dd0SGregory Neil Shapiro **  SM_INET6_NTOP -- convert IPv6 address to ASCII string (uncompressed)
235dd76dd0SGregory Neil Shapiro **
245dd76dd0SGregory Neil Shapiro **	Parameters:
255dd76dd0SGregory Neil Shapiro **		ipv6 -- IPv6 address
265dd76dd0SGregory Neil Shapiro **		dst -- ASCII representation of address (output)
275dd76dd0SGregory Neil Shapiro **		len -- length of dst
285dd76dd0SGregory Neil Shapiro **
295dd76dd0SGregory Neil Shapiro **	Returns:
305dd76dd0SGregory Neil Shapiro **		error: NULL
315dd76dd0SGregory Neil Shapiro */
325dd76dd0SGregory Neil Shapiro 
335dd76dd0SGregory Neil Shapiro char *
345dd76dd0SGregory Neil Shapiro sm_inet6_ntop(ipv6, dst, len)
355dd76dd0SGregory Neil Shapiro 	const void *ipv6;
365dd76dd0SGregory Neil Shapiro 	char *dst;
375dd76dd0SGregory Neil Shapiro 	size_t len;
385dd76dd0SGregory Neil Shapiro {
395dd76dd0SGregory Neil Shapiro 	SM_UINT16 *u16;
405dd76dd0SGregory Neil Shapiro 	int r;
415dd76dd0SGregory Neil Shapiro 
425dd76dd0SGregory Neil Shapiro 	u16 = (SM_UINT16 *)ipv6;
435dd76dd0SGregory Neil Shapiro 	r = sm_snprintf(dst, len,
445dd76dd0SGregory Neil Shapiro 		"%x:%x:%x:%x:%x:%x:%x:%x"
455dd76dd0SGregory Neil Shapiro 			, htons(u16[0])
465dd76dd0SGregory Neil Shapiro 			, htons(u16[1])
475dd76dd0SGregory Neil Shapiro 			, htons(u16[2])
485dd76dd0SGregory Neil Shapiro 			, htons(u16[3])
495dd76dd0SGregory Neil Shapiro 			, htons(u16[4])
505dd76dd0SGregory Neil Shapiro 			, htons(u16[5])
515dd76dd0SGregory Neil Shapiro 			, htons(u16[6])
525dd76dd0SGregory Neil Shapiro 			, htons(u16[7])
535dd76dd0SGregory Neil Shapiro 		);
545dd76dd0SGregory Neil Shapiro 	if (r > 0)
555dd76dd0SGregory Neil Shapiro 		return dst;
565dd76dd0SGregory Neil Shapiro 	return NULL;
575dd76dd0SGregory Neil Shapiro }
585dd76dd0SGregory Neil Shapiro #endif /* NETINET6 */
59