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