14b56a003SDaniel Anderson /* 24b56a003SDaniel Anderson * CDDL HEADER START 34b56a003SDaniel Anderson * 44b56a003SDaniel Anderson * The contents of this file are subject to the terms of the 54b56a003SDaniel Anderson * Common Development and Distribution License (the "License"). 64b56a003SDaniel Anderson * You may not use this file except in compliance with the License. 74b56a003SDaniel Anderson * 84b56a003SDaniel Anderson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 94b56a003SDaniel Anderson * or http://www.opensolaris.org/os/licensing. 104b56a003SDaniel Anderson * See the License for the specific language governing permissions 114b56a003SDaniel Anderson * and limitations under the License. 124b56a003SDaniel Anderson * 134b56a003SDaniel Anderson * When distributing Covered Code, include this CDDL HEADER in each 144b56a003SDaniel Anderson * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 154b56a003SDaniel Anderson * If applicable, add the following below this CDDL HEADER, with the 164b56a003SDaniel Anderson * fields enclosed by brackets "[]" replaced with your own identifying 174b56a003SDaniel Anderson * information: Portions Copyright [yyyy] [name of copyright owner] 184b56a003SDaniel Anderson * 194b56a003SDaniel Anderson * CDDL HEADER END 204b56a003SDaniel Anderson */ 214b56a003SDaniel Anderson 224b56a003SDaniel Anderson /* 234b56a003SDaniel Anderson * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 244b56a003SDaniel Anderson * Use is subject to license terms. 25*577bdc16SRobert Mustacchi * Copyright (c) 2015, Joyent, Inc. 264b56a003SDaniel Anderson */ 274b56a003SDaniel Anderson 284b56a003SDaniel Anderson #include <sys/isa_defs.h> 294b56a003SDaniel Anderson #include <sys/types.h> 304b56a003SDaniel Anderson #include <netinet/in.h> 314b56a003SDaniel Anderson #include <inttypes.h> 324b56a003SDaniel Anderson 334b56a003SDaniel Anderson #if (defined(_BIG_ENDIAN) || defined(_LP64)) && !defined(__lint) 344b56a003SDaniel Anderson 354b56a003SDaniel Anderson #error Use ISA-dependent byteorder64.c only on a 32-bit little-endian machine. 364b56a003SDaniel Anderson 374b56a003SDaniel Anderson #else 384b56a003SDaniel Anderson 394b56a003SDaniel Anderson uint64_t htonll(uint64_t in)404b56a003SDaniel Andersonhtonll(uint64_t in) 414b56a003SDaniel Anderson { 424b56a003SDaniel Anderson return (htonl(in >> 32) | ((uint64_t)htonl(in) << 32)); 434b56a003SDaniel Anderson } 444b56a003SDaniel Anderson 454b56a003SDaniel Anderson uint64_t ntohll(uint64_t in)464b56a003SDaniel Andersonntohll(uint64_t in) 474b56a003SDaniel Anderson { 484b56a003SDaniel Anderson return (ntohl(in >> 32) | (uint64_t)ntohl(in) << 32); 494b56a003SDaniel Anderson } 504b56a003SDaniel Anderson 51*577bdc16SRobert Mustacchi uint64_t htobe64(uint64_t in)52*577bdc16SRobert Mustacchihtobe64(uint64_t in) 53*577bdc16SRobert Mustacchi { 54*577bdc16SRobert Mustacchi return (htonl(in >> 32) | ((uint64_t)htonl(in) << 32)); 55*577bdc16SRobert Mustacchi } 56*577bdc16SRobert Mustacchi 57*577bdc16SRobert Mustacchi uint64_t htole64(uint64_t in)58*577bdc16SRobert Mustacchihtole64(uint64_t in) 59*577bdc16SRobert Mustacchi { 60*577bdc16SRobert Mustacchi return (in); 61*577bdc16SRobert Mustacchi } 62*577bdc16SRobert Mustacchi 63*577bdc16SRobert Mustacchi uint64_t betoh64(uint64_t in)64*577bdc16SRobert Mustacchibetoh64(uint64_t in) 65*577bdc16SRobert Mustacchi { 66*577bdc16SRobert Mustacchi return (ntohl(in >> 32) | (uint64_t)ntohl(in) << 32); 67*577bdc16SRobert Mustacchi } 68*577bdc16SRobert Mustacchi 69*577bdc16SRobert Mustacchi uint64_t letoh64(uint64_t in)70*577bdc16SRobert Mustacchiletoh64(uint64_t in) 71*577bdc16SRobert Mustacchi { 72*577bdc16SRobert Mustacchi return (in); 73*577bdc16SRobert Mustacchi } 74*577bdc16SRobert Mustacchi 75*577bdc16SRobert Mustacchi uint64_t be64toh(uint64_t in)76*577bdc16SRobert Mustacchibe64toh(uint64_t in) 77*577bdc16SRobert Mustacchi { 78*577bdc16SRobert Mustacchi return (ntohl(in >> 32) | (uint64_t)ntohl(in) << 32); 79*577bdc16SRobert Mustacchi } 80*577bdc16SRobert Mustacchi 81*577bdc16SRobert Mustacchi uint64_t le64toh(uint64_t in)82*577bdc16SRobert Mustacchile64toh(uint64_t in) 83*577bdc16SRobert Mustacchi { 84*577bdc16SRobert Mustacchi return (in); 85*577bdc16SRobert Mustacchi } 86*577bdc16SRobert Mustacchi 874b56a003SDaniel Anderson #endif /* (_BIG_ENDIAN) || _LP64) && !__lint */ 88