Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bazel/external/quiche.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,7 @@ envoy_cc_test(
name = "quic_platform_test",
srcs = envoy_select_quiche(
[
"quiche/quic/platform/api/quic_endian_test.cc",
"quiche/quic/platform/api/quic_reference_counted_test.cc",
"quiche/quic/platform/api/quic_string_utils_test.cc",
"quiche/quic/platform/api/quic_text_utils_test.cc",
Expand Down
1 change: 1 addition & 0 deletions source/extensions/quic_listeners/quiche/platform/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ envoy_cc_library(
":quic_platform_logging_impl_lib",
"//include/envoy/thread:thread_interface",
"//source/common/common:assert_lib",
"//source/common/common:byte_order_lib",
"//source/server:backtrace_lib",
]),
)
Expand Down
29 changes: 13 additions & 16 deletions source/extensions/quic_listeners/quiche/platform/quic_endian_impl.h
Original file line number Diff line number Diff line change
@@ -1,31 +1,28 @@
#pragma once

#include <arpa/inet.h>

#include <cstdint>

// NOLINT(namespace-envoy)

// This file is part of the QUICHE platform implementation, and is not to be
// consumed or referenced directly by other Envoy code. It serves purely as a
// porting layer for QUICHE.

#include <cstdint>

#include "common/common/byte_order.h"

namespace quic {

class QuicEndianImpl {
public:
static uint16_t HostToNet16(uint16_t x) { return htons(x); }
static uint32_t HostToNet32(uint32_t x) { return htonl(x); }
// TODO: implement
static uint64_t HostToNet64(uint64_t /*x*/) { return 0; }

static uint16_t NetToHost16(uint16_t x) { return ntohs(x); }
static uint32_t NetToHost32(uint32_t x) { return ntohl(x); }
// TODO: implement
static uint64_t NetToHost64(uint64_t /*x*/) { return 0; }

// TODO: implement
static bool HostIsLittleEndian() { return false; }
static uint16_t HostToNet16(uint16_t x) { return toEndianness<ByteOrder::BigEndian>(x); }
static uint32_t HostToNet32(uint32_t x) { return toEndianness<ByteOrder::BigEndian>(x); }
static uint64_t HostToNet64(uint64_t x) { return toEndianness<ByteOrder::BigEndian>(x); }

static uint16_t NetToHost16(uint16_t x) { return fromEndianness<ByteOrder::BigEndian>(x); }
static uint32_t NetToHost32(uint32_t x) { return fromEndianness<ByteOrder::BigEndian>(x); }
static uint64_t NetToHost64(uint64_t x) { return fromEndianness<ByteOrder::BigEndian>(x); }

static bool HostIsLittleEndian() { return NetToHost16(0x1234) != 0x1234; }
};

} // namespace quic