1/** @File 2 Routines for translating between host and network byte-order. 3 4 Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials are licensed and made available 6 under the terms and conditions of the BSD License that accompanies this 7 distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license. 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13**/ 14#include <Library/BaseLib.h> 15#include <LibConfig.h> 16#include <sys/endian.h> 17 18// Undefine macro versions of the functions to be defined below. 19#undef htonl 20#undef htons 21#undef ntohl 22#undef ntohs 23 24/** 32-bit Host to Network byte order conversion. 25 26 @param[in] Datum The 32-bit value to be converted. 27 @return Datum, converted to network byte order. 28**/ 29uint32_t 30htonl( 31 IN uint32_t Datum 32 ) 33{ 34#if BYTE_ORDER == LITTLE_ENDIAN 35 return SwapBytes32(Datum); 36#else 37 return Datum; 38#endif 39} 40 41/** 16-bit Host to Network byte order conversion. 42 43 @param[in] Datum The 16-bit value to be converted. 44 @return Datum, converted to network byte order. 45**/ 46uint16_t 47htons( 48 IN uint16_t Datum 49 ) 50{ 51#if BYTE_ORDER == LITTLE_ENDIAN 52 return SwapBytes16(Datum); 53#else 54 return Datum; 55#endif 56} 57 58/** 32-bit Network to Host byte order conversion. 59 60 @param[in] Datum The 16-bit value to be converted. 61 @return Datum, converted to host byte order. 62**/ 63uint32_t 64ntohl( 65 IN uint32_t Datum 66 ) 67{ 68#if BYTE_ORDER == LITTLE_ENDIAN 69 return SwapBytes32(Datum); 70#else 71 return Datum; 72#endif 73} 74 75/** 16-bit Network to Host byte order conversion. 76 77 @param[in] Datum The 16-bit value to be converted. 78 @return Datum, converted to host byte order. 79**/ 80uint16_t 81ntohs( 82 IN uint16_t Datum 83 ) 84{ 85#if BYTE_ORDER == LITTLE_ENDIAN 86 return SwapBytes16(Datum); 87#else 88 return Datum; 89#endif 90} 91