/** @File | |
Routines for translating between host and network byte-order. | |
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials are licensed and made available | |
under the terms and conditions of the BSD License that accompanies this | |
distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license. | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#include <Library/BaseLib.h> | |
#include <LibConfig.h> | |
#include <sys/endian.h> | |
// Undefine macro versions of the functions to be defined below. | |
#undef htonl | |
#undef htons | |
#undef ntohl | |
#undef ntohs | |
/** 32-bit Host to Network byte order conversion. | |
@param[in] Datum The 32-bit value to be converted. | |
@return Datum, converted to network byte order. | |
**/ | |
uint32_t | |
htonl( | |
IN uint32_t Datum | |
) | |
{ | |
#if BYTE_ORDER == LITTLE_ENDIAN | |
return SwapBytes32(Datum); | |
#else | |
return Datum; | |
#endif | |
} | |
/** 16-bit Host to Network byte order conversion. | |
@param[in] Datum The 16-bit value to be converted. | |
@return Datum, converted to network byte order. | |
**/ | |
uint16_t | |
htons( | |
IN uint16_t Datum | |
) | |
{ | |
#if BYTE_ORDER == LITTLE_ENDIAN | |
return SwapBytes16(Datum); | |
#else | |
return Datum; | |
#endif | |
} | |
/** 32-bit Network to Host byte order conversion. | |
@param[in] Datum The 16-bit value to be converted. | |
@return Datum, converted to host byte order. | |
**/ | |
uint32_t | |
ntohl( | |
IN uint32_t Datum | |
) | |
{ | |
#if BYTE_ORDER == LITTLE_ENDIAN | |
return SwapBytes32(Datum); | |
#else | |
return Datum; | |
#endif | |
} | |
/** 16-bit Network to Host byte order conversion. | |
@param[in] Datum The 16-bit value to be converted. | |
@return Datum, converted to host byte order. | |
**/ | |
uint16_t | |
ntohs( | |
IN uint16_t Datum | |
) | |
{ | |
#if BYTE_ORDER == LITTLE_ENDIAN | |
return SwapBytes16(Datum); | |
#else | |
return Datum; | |
#endif | |
} |