1// Copyright 2017 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <stdint.h>
6
7#ifndef __BYTE_ORDER__
8#error __BYTE_ORDER__ not defined!
9#endif
10
11#ifndef __ORDER_LITTLE_ENDIAN__
12#error __ORDER_LITTLE_ENDIAN__ not defined!
13#endif
14
15uint16_t htons(uint16_t val) {
16#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
17    return __builtin_bswap16(val);
18#else
19    return val;
20#endif
21}
22
23uint16_t ntohs(uint16_t val) {
24    return htons(val);
25}
26
27uint32_t htonl(uint32_t val) {
28#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
29    return __builtin_bswap32(val);
30#else
31    return val;
32#endif
33}
34
35uint32_t ntohl(uint32_t val) {
36    return htonl(val);
37}
38
39