blob: c501874b845b6da1473a3a927f4aeb6d23ac41f0 [file] [log] [blame]
Vishal Bhoj82c80712015-12-15 21:13:33 +05301/** @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}