blob: 1743092a1f42fa2e9d9ddea97114d231f64ee095 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "quiche/quic/core/quic_config.h"
#include "quiche/quic/core/quic_types.h"
#include "quiche/quic/core/quic_versions.h"
namespace quic {
// List of QUIC versions that support MASQUE. Currently restricted to IETF QUIC.
QUIC_NO_EXPORT ParsedQuicVersionVector MasqueSupportedVersions();
// Default QuicConfig for use with MASQUE. Sets a custom max_packet_size.
QUIC_NO_EXPORT QuicConfig MasqueEncapsulatedConfig();
// Maximum packet size for encapsulated connections.
enum : QuicByteCount {
kMasqueMaxEncapsulatedPacketSize = 1250,
kMasqueMaxOuterPacketSize = 1350,
// Mode that MASQUE is operating in.
enum class MasqueMode : uint8_t {
kInvalid = 0, // Should never be used.
kOpen = 2, // Open mode uses the MASQUE HTTP CONNECT-UDP method as documented
// in <>. This mode allows
// unauthenticated clients (a more restricted mode will be added to this enum
// at a later date).
kConnectIp =
1, // ConnectIp mode uses MASQUE HTTP CONNECT-IP as documented in
// <>. This
// mode also allows unauthenticated clients.
QUIC_NO_EXPORT std::string MasqueModeToString(MasqueMode masque_mode);
QUIC_NO_EXPORT std::ostream& operator<<(std::ostream& os,
const MasqueMode& masque_mode);
// Create a TUN interface, with the specified `client_address`. Requires root.
int CreateTunInterface(const QuicIpAddress& client_address, bool server = true);
} // namespace quic